孙鑫vc++学习(vs2008)笔记之第四课MFC消息映射、画图
2012-02-12 22:04
585 查看
1.view类始终在框架类窗口之上
2.删除类成员函数:在属性窗口消息里面找到相应的消息相应函数下拉菜单删除。
3.增加一个消息响应函数的时候,在三个地方修改代码:①头文件中增加消息相应函数声明;②源文件中BEGIN_MESSAGE_MAP和END_MESSAGE_MAP(消息映射表)之间加入相应函数宏,通过这个宏把消息和消息响应函数联系起来;③消息响应代码。
4.处理机制:消息映射。
5.WindowProc在wincore.cpp中,其中调用OnWndMsg完成消息映射的处理
6.从CWnd所派生出来的类当中都有一个数据成员保存了跟这个类相关的句柄,m_hWnd
7.CDC类,跟作图有关的操作封装在CDC类中
8.作图区域:client and nonclient areas,客户区和非客户区
9.静态函数:不属于某个具体的对象,只属于所属的类本身,非静态成员函数属于对象。静态函数在类创建的时候分配空间,非静态函数在定义对象的时候分配空间。内存里面有分配才能调用。静态成员变量必须初始化。
10.用到的一些函数在程序注释里面。。。。
View Code
2.删除类成员函数:在属性窗口消息里面找到相应的消息相应函数下拉菜单删除。
3.增加一个消息响应函数的时候,在三个地方修改代码:①头文件中增加消息相应函数声明;②源文件中BEGIN_MESSAGE_MAP和END_MESSAGE_MAP(消息映射表)之间加入相应函数宏,通过这个宏把消息和消息响应函数联系起来;③消息响应代码。
4.处理机制:消息映射。
5.WindowProc在wincore.cpp中,其中调用OnWndMsg完成消息映射的处理
6.从CWnd所派生出来的类当中都有一个数据成员保存了跟这个类相关的句柄,m_hWnd
7.CDC类,跟作图有关的操作封装在CDC类中
8.作图区域:client and nonclient areas,客户区和非客户区
9.静态函数:不属于某个具体的对象,只属于所属的类本身,非静态成员函数属于对象。静态函数在类创建的时候分配空间,非静态函数在定义对象的时候分配空间。内存里面有分配才能调用。静态成员变量必须初始化。
10.用到的一些函数在程序注释里面。。。。
View Code
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 m_ptOrigin = m_ptOld = point; m_bDraw = TRUE; CView::OnLButtonDown(nFlags, point); } void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //HDC hdc; //hdc = ::GetDC(m_hWnd); ////从CWnd所派生出来的类当中都有一个数据成员保存了跟这个类相关的句柄m_hWnd //::MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL); //移动到原点 //LineTo(hdc,point.x,point.y); //画线 //::ReleaseDC(m_hWnd,hdc); //释放DC //CDC类 //CDC *pDC = GetDC(); //CWnd类的成员函数GetDC //pDC->MoveTo(m_ptOrigin); //pDC->LineTo(point); //ReleaseDC(pDC); //CClientDC类 //CClientDC dc(this); ////CClientDC dc(GetParent()); //dc.MoveTo(m_ptOrigin); //dc.LineTo(point); //CWindowDC dc(this); //CWindowDC可以访问客户区和非客户区 //CWindowDC dc(GetParent()); //CWindowDC dc(GetDesktopWindow()); //获取桌面句柄 //dc.MoveTo(m_ptOrigin); //dc.LineTo(point); //CPen pen(PS_DOT,1,RGB(0,255,0)); //定义画笔 //CClientDC dc(this); //CPen *pOldPen = dc.SelectObject(&pen); //颜色切换 //dc.MoveTo(m_ptOrigin); //dc.LineTo(point); //dc.SelectObject(pOldPen); //画刷,填充矩形区域 //CBrush brush(RGB(255,0,0)); //CBitmap bitmap; //bitmap.LoadBitmap(IDB_BITMAP1); //位图画刷 //CBrush brush(&bitmap); //CClientDC dc(this); ////dc.FillRect(CRect(m_ptOrigin,point),&brush); //CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); //透明矩形 ////FromHandle是静态成员函数 //CBrush *pOldBrush = dc.SelectObject(pBrush); //dc.Rectangle(CRect(m_ptOrigin,point)); //画矩形 //dc.SelectObject(pOldBrush); m_bDraw = FALSE; CView::OnLButtonUp(nFlags, point); } void CDrawView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CClientDC dc(this); CPen pen(PS_SOLID,1,RGB(255,0,0)); CPen *pOldPen = dc.SelectObject(&pen); if (m_bDraw) { dc.SetROP2(R2_BLACK); //设置绘画模式 dc.MoveTo(m_ptOrigin); //dc.LineTo(point); //连续画画 //m_ptOrigin = point; //下一次起点是上一次的终点 dc.LineTo(m_ptOld); //画扇形 //dc.MoveTo(m_ptOrigin); dc.MoveTo(m_ptOld); dc.LineTo(point); m_ptOld = point; } dc.SelectObject(pOldPen); CView::OnMouseMove(nFlags, point); }
相关文章推荐
- MFC学习笔记之消息映射机制
- MFC学习笔记——消息映射
- MFC学习笔记之二----------MFC框架程序及消息映射
- mfc的消息映射学习笔记
- 第四课:MFC画图-MFC消息映射机制的剖析
- 孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析
- 孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析
- MFC学习笔记之二----------MFC框架程序及消息映射
- 孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析
- 孙鑫vc++学习(vs2008)笔记之第三课MFC内部运行原理
- 孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析
- MFC学习笔记2_消息映射
- 孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析
- 孙鑫VC视频教程笔记之第四课“MFC消息映射机制和CDC类”
- 【MFC学习笔记-作业10-稍微难一点的画图】
- 『Visual C++ MFC 简明教程』----第四部分:消息映射
- 090907(星期一)项目进展:学习MFC的消息映射
- 孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析
- MFC消息映射的原理:笔记
- MFC学习笔记之三————区分窗口类对象以及窗口&&四种获得DC方式画图