资源描述:
《VC随笔鼠标键盘消息》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC随笔鼠标键盘消息添加左键按下鼠标消息处理的步骤:1、Ctrl+W打开MFCClassWizard对话框2、在MessageMaps选项卡中,在ClassName下拉列表中选择CMy2DCADView视图类,在ObjectIds列表框中选择第一个列表项CMy2DCADView,双击WM_LBUTTONDOWN消息,就为树突类添加上了鼠标左键按下的消息处理函数OnLButtonDown了3、单击MFCClassWizard对话框中的EditCode按钮,编辑OnLButtonDown函数如下:voidCMy2DCADView::OnLButtonDown
2、(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault CClientDCdc(this); //在视图区中输出文本“鼠标左键按下” dc.TextOut(100,100,"鼠标左键按下"); CView::OnLButtonDown(nFlags,point);}注意:若想知道在按下鼠标左键的同时某个按钮是否被按下,可以用对应的常量标志与nFlags参数作按位逻辑“与”运算,所得结果若为非零值,则表示按钮被按下。如对于Shift按钮,可以在OnLBu
3、ttonDown函数中添加下面的代码: if(nFlags&MK_SHIFT) {//检查在按下鼠标左键的同时,Shift键是否被按下 dc.TextOut(100,50,"Shift键被按下"); } 用鼠标画点和画线以简单总结为以下4步:1、分析交互过程2、添加成员变量。注意成员变量需要初始化3、使用ClassWizard向视图类中添加相应的鼠标消息处理函数4、在函数中添加代码画点:画点是一步交互工程,只需要处理鼠标左键按下的消息WM_LBUTTONDOWN,并在消息处理函数里面添加相应的代码就可以了。需要注意的是,需要有一个变量来标志程序是否出于
4、画点状态,前面已经添加了一个BOOL变量m_bIsPoint,因此无须重新添加,直接使用就可以了。修改视图类的OnLButtonDown函数如下:voidCMy2DCADView::OnLButtonDown(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault CClientDCdc(this);//获取设备环境 //////////////////////////////////////////// //以下的代码在视图区中画点// ///////
5、///////////////////////////////////// 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函数,
6、只需把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、在ClassView窗口中的CMy2DCAD
7、View上单击鼠标右键,选择AddMemberVariable...项,添加两个记录线段起点坐标值的整型公有成员变量m_nStartX和m_nStartY,然后再添加一个记录画线段操作步数的整型公有成员变量m_nStep(第一步为起点,第二步为终点)。此时CMy2DCADView类的定义头文件中应该有如下的代码:public: intm_nStep; intm_nStartY; intm_nStartX;2、在视图类的构造函数中为新增加的成员变量赋初始值,添加如下代码: m_nStep=0;//操作步数初始为0 m_nStartX=m_nStartY=0
8、;//坐标值初始也为03、在视图类的OnLButtonDown函数中添加具体的画