Vc++6.0中使用鼠标画线的实现过程
1、建立绘图程序框架
开发绘图程序的第一步是使用MFC AppWizard来建立绘图程序的基本框架·步骤为:
(1) 从File菜单选择New菜单项,弹出New对话框
(2) 选择Projects 选项从项目类型列表框中选择MFC AppWizard(exe),在Project name文本框中输入绘图程序的名字.这里设定为draw.其他采用默认值.
(3) 单击OK按钮,弹出MFC AppWizard-step 1对话框,选中Single document单选按钮,单击Finish按钮表示使用随后的默认设置。再单击OK按钮,就会自动生成程序框架。
2、映射鼠标消息
为了能用鼠标在屏幕上作图,当然必须要控制鼠标。控制鼠标的方法就是对鼠标消息进行映射。
用ClassWizard映射鼠标消息
(1) 从view菜单中选择classwizard命令,弹出MFC ClassWizard对话框。
(2) 选择Message Maps 选项卡(这也是默认)
(3) 从Class name 下拉列表框中选择要处理的类名为CDrawView
(4) 在Obiect IDs框中选择要定义消息处理函数的对象为CDrawView
(5) 在Messages框中选择要映射的鼠标消息为WM_LBUTTONDOWN(这是单击鼠标左按钮消息),然后单击Add Function按钮。
(6) 重复步骤(5),映射WM_LBUTTONUP(这是释放鼠标左按钮消息)
3、在数据类中添加数据成员以存放鼠标的位置信息
打开DrawView.h,将以下语句添加到CDrawView类定义中
public:
void DdaLine(CPoint start, CPoint end,COLORREF color);
(注:这是在CDrawView类中定义了dda画线函数原形)
protected:
POINT m_start,m_end;
(注: POINT是VC中的记录类型,一般用于定义点的位置,包括x,y两个坐标值。m_start用于保存线段起点,m_end用于保存线段终点)
4、添加消息处理函数代码
(1)在 DrawView.cpp的CDrawView:: ONLBUTTONDOWN函数下添加如下代码:
m_start=point;
(2)在 DrawView.cpp的CDrawView:: ONLBUTTONUP函数下添加如下代码:
m_end=point;
DdaLine(m_start,m_end,RGB(255,0,0));
(注:vc++中通过RGB( , , )来定义颜色,可以是0-255之间的值)
5、添加画线函数代码
在 DrawView.cpp中添加函数
void CDrawView::DdaLine(CPoint start, CPoint end,COLORREF color)
{
CClientDC dc(this);
int dx, dy, steps, i;
float x, y, xinc, yinc;
dx = end.x-start.x; dy = end.y-start.y;
x = start.x; y = start.y;
if ( abs(dx)>abs(dy) )
steps = abs(dx);
else
steps = abs(dy);
xinc = (float)dx / steps;
yinc = (float)dy / steps;
dc.SetPixel((int)(x+0.5), (int)(y+0.5),color);
for ( i=0; i<steps; i++ )
{
x += xinc; y += yinc;
dc.SetPixel((int)(x+0.5), (int)(y+0.5),color);
}
}
这个画线函数和tc的基本一样,只是需要在开始 加上 CClientDC dc(this);
画点用 dc.SetPixel(x,y,color)
经过上面的步骤,鼠标画线程序完成。
然后在VC++菜单上选build项中的build draw.exe完成程序的编译连接。如果有错误,在下面窗口中有提示。如果只有waring类型的警告错误,还是能够生成draw.exe文件,不过还是需要关注。如果有error错误,就不能生成draw.exe文件,需要修改相应的错误。
编译连接完成后选择build项中的execute draw.exe就可以运行程序了。