在学习MFC画图之前,我们首先要搞清楚客户区这个概念。
在MFC的单文档应用程序中,有两个窗口,即CMainFrame框架窗口和CTestView窗口,CTestView窗口是CMainFrame框架窗口的子窗口,它始终覆盖在CMainFrame框架窗口之上。对于框架窗口和视图窗口的客户区在下图中标示了
如图所示,红色框内是CView的客户区,绿色框内是CMainFrame的客户区
一般我们是在客户区中画图。
现在,我们可以开始进行画图程序的编写了。
一、因为我们是用鼠标来画图,所以必须给程序添加鼠标的消息响应函数,OnLButtonDown(UINT nFlags, CPoint point) 和OnLButtonUp(UINT nFlags, CPoint point) ,
这两个消息响应函数都有一个CPoint类型的参数,其实这就是鼠标的坐标点,所以我们还要给CMFC01View类添加一个数据成员m_ptOrigin来保存这个坐标点,
我们在OnLButtonDown(UINT nFlags, CPoint point) 中m_ptOrigin=point;保存这个原点。
在OnLButtonUp(UINT nFlags, CPoint point)定义一个DC的句柄,
HDC hdc;
hdc=::GetDC(m_hWnd);
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);
MoveToEx:先移动到当前的一个位置
LineTo:从当前位置到哪
ReleaseDC:释放DC
那么这样的话,就可以画线了。
这里是用API函数来画线的。