一、绘图
新建一个工程Graphic。添加一个菜单“绘图”,在这个菜单中添加四个菜单项,分别为点(IDM_DOT)、直线(IDM_LINE)、矩形(IDM_RECTANGLE)和椭圆(IDM_ELLIPSE)。分别为这四个菜单项添加命令响应。在每个命令响应函数中保存用户的选择,定义成员变量UINT
m_nDrawType
private保存用户的选择。在CGraphicView的构造方法中初始化m_nDrawType=0。在OnDot、OnLine、OnRectangle和OnEllipse响应函数中分别设置这个成员变量的值为1、2、3、4。分别捕获鼠标左键按下和松开的消息WM_LBUTTONDOWN和WM_LBUTTONUP。在WM_LBUTTONDOWN中将鼠标按下的这个点保存,在View类中添加成员变量CPoint
m_ptOrgin
private,在构造函数中初始化为0。在OnButtonDownh函数总保存这个点到成员变量中m_ptOrigin=point。
鼠标松开的响应函数ONBUTTONUP中代码如下:
CClientDC dc(this);
CPen pen(PS_SOLID,1,RGB(255,0,0));
dc.SelectObject(&pen);
CBrush
*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(pBrush);
switch(m_nDrawType)
{
case 1:
dc.SetPixel(point,RGB(255,0,0));
break;
case 2:
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
break;
case 3:
dc.Rectangle(CRect(m_ptOrigin,point));
break;
case 4:
dc.Ellipse(CRect(m_ptOrigin,point));
break;
}
二、设置对话框
1、设置线宽
插入一个对话框:IDI_DLG_SETTING
setting。在对话框上添加一个静态文本框:线宽,一个编辑框:IDC_LINE_WIDTH。双击对话框创建一个对话框的类:CSettingDlg。点右键给编辑框控件关联成员变量:m_nLineWidth
UINT。增加设置菜单项:IDM_SETTING 设置,给菜单项添加命令响应OnSetting,选择view类。
响应函数中的代码如下:
CSettingDlg dlg;
dlg.DoModal();
在view类中增加保存对话框中设置的线宽的成员变量:UINT m_nLineWidth
private。在构造函数中初始化为0。
设置菜单项响应函数OnSetting的代码修改如下:
CSettingDlg dlg;