- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC随笔鼠标键盘消息
VC随笔鼠标键盘消息
添加左键按下鼠标消息处理的步骤:
1、Ctrl+W打开MFC ClassWizard对话框
2、在Message Maps选项卡中,在Class Name下拉列表中选择CMy2DCADView视图类,在Object Ids列表框中选择第一个列表项CMy2DCADView,双击WM_LBUTTONDOWN消息,就为树突类添加上了鼠标左键按下的消息处理函数OnLButtonDown了
3、单击MFC ClassWizard对话框中的Edit Code按钮,编辑OnLButtonDown函数如下:
void CMy2DCADView::OnLButtonDown(UINT nFlags, CPoint point) {?// TODO: Add your message handler code here and/or call default?CClientDC dc(this);?//在视图区中输出文本“鼠标左键按下”?dc.TextOut(100, 100, 鼠标左键按下);
?CView::OnLButtonDown(nFlags, point);}
注意:若想知道在按下鼠标左键的同时某个按钮是否被按下,可以用对应的常量标志与nFlags参数作按位逻辑“与”运算,所得结果若为非零值,则表示按钮被按下。如对于Shift按钮,可以在OnLButtonDown函数中添加下面的代码:
?if(nFlags MK_SHIFT)?{//检查在按下鼠标左键的同时,Shift键是否被按下??dc.TextOut(100, 50, Shift键被按下);?}
?
用鼠标画点和画线以简单总结为以下4步:
1、分析交互过程
2、添加成员变量。注意成员变量需要初始化
3、使用ClassWizard向视图类中添加相应的鼠标消息处理函数
4、在函数中添加代码
画点:
画点是一步交互工程,只需要处理鼠标左键按下的消息WM_LBUTTONDOWN,并在消息处理函数里面添加相应的代码就可以了。需要注意的是,需要有一个变量来标志程序是否出于画点状态,前面已经添加了一个BOOL变量m_bIsPoint,因此无须重新添加,直接使用就可以了。
修改视图类的OnLButtonDown函数如下:
void CMy2DCADView::OnLButtonDown(UINT nFlags, CPoint point) {?// TODO: Add your message handler code here and/or call default?CClientDC dc(this);//获取设备环境?////////////////////////////////////////////?//以下的代码在视图区中画点//?////////////////////////////////////////////?if(m_bIsPoint)//如果程序处于画点状态?{??//调用CDC::Ellipse函数以点为中心,画一个小的圆圈??dc.Ellipse(point.x-2, point.y-2, point.x+2, point.y+2);?}
?CView::OnLButtonDown(nFlags, point);}
注意:由于使用CDC::SetPixel函数画的点太小,只有一个象素大,不利于观察,因此使用CDC::Ellipse函数画一个小圆圈代替。若使用CDC::SetPixel函数,只需把dc.Ellipse(point.x-2, point.y-2, point.x+2, point.y+2);代码替换为dc.SetPixel(point, RGB(0,0,255));
画线:(两次单击鼠标左键的方式)
同画点类似,除了需要有一个标志画线状态的BOOL变量m_bIsLine以外,还需要一个操作步数变量来标志鼠标左键按下时定义的是线段的起点还是终点,如果是起点,则将该点坐标值记录下来,供后续操作中画线段用;如果是终点,就将线段画出。因此,还需要有两个变量来记录线段的起点X和Y坐标值。
具体步骤如下:
1、在Class View窗口中的CMy2DCADView上单击鼠标右键,选择Add Member Variable...项,添加两个记录线段起点坐标值的整型公有成员变量m_nStartX和m_nStartY,然后再添加一个记录画线段操作步数的整型公有成员变量m_nStep(第一步为起点,第二步为终点)。此时CMy2DCADView类的定义头文件中应该有如下的代码:
public:?int m_nStep;?int m_nStartY;?int m_nStartX;
2、在视图类的构造函数中
文档评论(0)