看了一天孙鑫老师的视频教程,发现其实在VC++中利用MFC进行编程也可以拦截消息,通过建立消息
映射来处理消息。
嘿嘿,根据老师讲的内容,自己测试了书中的代码。
发现XP和2000对处理客户区的范围不一样。
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default ///////////// /* 用全局函数实现画线功能 */ /* HDC hdc; hdc=::GetDC(this->m_hWnd), ::MoveToEx(hdc,m_point.x,m_point.y,NULL); ::LineTo(hdc,point.x,point.y); ::ReleaseDC(m_hWnd,hdc); */ /////////// /* 利用CDC类实现画线功能 */ /* CDC *pdc=GetDC(); pdc->MoveTo(m_point); pdc->LineTo(point); ReleaseDC(pdc); */ //////////// /* 利用CClientDC类实现画线功能 */ /* CClientDC dc(this); dc.MoveTo(m_point.x,m_point.y); dc.LineTo(point); */ /* CClientDC dc(GetParent()); dc.MoveTo(m_point); dc.LineTo(point); */ ///////////////// /* 利用CwindowDC类画线 */ /* CWindowDC dc(this); dc.MoveTo(m_point); dc.LineTo(point); */ /* CWindowDC dc(GetDesktopWindow()); dc.MoveTo(m_point); dc.LineTo(point); dc.TextOut(100,100,"Volcanol",strlen("Volcanol")); */ ///////////////// /* 绘制彩色的线条 */ //利用CPen类进行彩色绘图 /* CPen pen(PS_SOLID,5,RGB(255,43,123)); CClientDC dc(this); CPen *oldpen=dc.SelectObject(&pen); dc.MoveTo(m_point); dc.LineTo(point); dc.SelectObject(&oldpen); */ ////////////// /* 利用画刷绘图 */ /* CBrush brush(RGB(100,23,255)); //创建画刷 CClientDC dc(this); //获取客户区域的设备内容 dc.FillRect(CRect(m_point,point),&brush); //填充区域 */ ////////////////// /* 利用位图画刷绘图 */ /* CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); CBrush brush(&bitmap); CClientDC dc(this); //获取客户区域的设备内容 dc.FillRect(CRect(m_point,point),&brush); //填充区域 */
如果对MFC和winapi 都很熟悉那么使用VC开发一个应用程序还是挺快捷的,
利用MFC建立界面,而利用winapi实现负责应用。
其实可以通过自己封装来实现一个程序架构的。