我需要你在VC2008中响应按钮的鼠标按下弹起事件,应如何做。本人新手。

7261人阅读
Visual C++和MFC(15)
&&&&& 最近重温《MFC Windows应用程序设计》第二版这本书,里面的代码全部是使用VC6.0写的,我Win7下安装的是VS2008开发环境。
&&&&&&&VC2008下添加和删除常见的消息响应函数有两种方法:自动和手动。
&&&& 一、VC2008中自动添加消息响应函数
&&&&& 举一个《MFC Windows应用程序设计》的MFC单文档应用程序的例子,如下:
&&&&&& 例4-9& 设计一个利用CClientDC绘图,在窗口单击鼠标左键之后,在窗口的用户区出现一个菱形的应用程序。
&&&&&&& (1)& 在MFC AppWizard中创建一个名称为MFCexp4_9的单文档应用程序。
&&&&&& (2)& 在视图类的OnLButtonDown()函数中输入如下代码。
void CMFCexp4_9View::OnLButtonDown(UINT nFlags, CPoint point)
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
//定义一个CClientDC的对象dc
//定义一个描述矩形的对象rect
GetClientRect(&rect); //获得窗口用户区的尺寸,并存入到rect
//以下是绘制菱形的代码
dc.MoveTo(0,(rect.bottom+rect.top)/2);
dc.LineTo((rect.left+rect.right)/2,0);
dc.LineTo(rect.right,(rect.bottom+rect.top)/2);
dc.LineTo((rect.right+rect.left)/2,rect.bottom);
dc.LineTo(0,(rect.bottom+rect.top)/2);
CView::OnLButtonDown(nFlags, point);
&&&&&&&&&&&&&& 其实在VS2008中添加消息响应函数的办法蛮简单的,方法如下:
&&&&&&&&&&&& 假如创建了一个名为Example的MFC单文档应用程序,则在VS2008中右键单击类视图中的CExampleView类,选中【Properties】,在属性页中选择【Messages】项,其中有WM_LBUTTONDOWN的鼠标左键按下的消息,点击消息后面的Add或者Delete即可一键添加或者删除消息响应函数以及对应的消息映射宏了。如下图所示:
&&&&&&&&&&&&
&&&&&&&&&&&& 新浪博主转载的一篇博文很简洁:
&&&&&&&&&&& VC2008 中添加MFC消息处理函数具体步骤如下:
·1.在类视图中,右键需要添加处理函数的类,选择属性。
·2.在“属性”窗口中,单击“消息”按钮。
·3.在消息列表框中,选择需要添加的消息。
·4.这样就可以在代码框中看到,OnCreate已经添加了。
想要删除的话再到消息框中选删除就可以了。
&&&&&&&&&&&&
&&&&&&&&& 二、VC2008中手动添加或删除消息响应函数
&&&&&&&&&&& 可以参照CSDN博主这篇博客:,他的方法是手动添加消息响应函数,删除的话就是逆过程了。手动删除消息响应函数需要删掉三个地方,以删除菜单响应函数为例时包括以下三个部分:
&&&&&&&&&&& 1、头文件中的定义,如afx_msg void OnDialogModel();
&&&&&&&&&&& 2、源文件中的消息响应,如:ON_COMMAND(ID_DIALOG_MODEL, &CMyboleView::OnDialogModel)
&&&&&&&&&&& 3、源文件中具体的函数体,例如void CMyboleView::OnDialogModel()函数的定义实现部分:
&&&&&&&&&& 看来以后得多使用一下VS2008这套工具,可以通过学习MFC和Win32应用程序多加练习。


参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:661950次
积分:6558
积分:6558
排名:第3001名
原创:84篇
转载:39篇
评论:161条
(2)(2)(3)(8)(6)(10)(6)(4)(2)(4)(8)(7)(3)(3)(2)(7)(4)(1)(3)(1)(1)(5)(11)(20)(1)09:50 提问
在vs2008中为Qt按钮添加事件
我用vs2008创建了一个Qt项目,在Qt的ui上面放置了一个按钮Btn1,我现在需要在程序中为这个按钮添加点击改变按钮上面文字的颜色为红色,需要这么设置?Qt新手,跪求大神解答
按赞数排序
分为两步,一按键响应:
二文本颜色的修改
其他相似问题【mfc】鼠标、键盘响应事件
时间: 13:08:57
&&&& 阅读:5380
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&对于mfc这东西,你真的必要跟我扯一大堆怎么类,什么派生,什么鬼东西
告诉我怎么做出一个个小功能,我记住它就可以了
这期为大家带来MFC的鼠标响应事件
这也是所谓的MFC中的“消息映射事件”
一、基本目标
1、有一个基本的MFC程序,点击“关闭”则“关闭”这个程序,这点没什么好讲的,把自带的“取消”按钮,右键-&属性的Caption改成“关闭”二字就可以了
2、鼠标在对话框中移动,则显示其位置信息,这个坐标是窗口内部坐标
3、如果按着鼠标右键移动鼠标,则在这个工程的标题栏会显示“按着鼠标右键移动鼠标”,松开鼠标右键回复如初
4、如果按着键盘上的Ctrl键或者Shift键在对话框的窗口中移动鼠标,标题栏同样会有相应的提示,是否同时按下也会有提示
5、左击对话框,会弹出对话框,显示鼠标位置在哪里
二、制作过程
1、首先新建一个MFC工程,除了自带的“取消”按钮改名为“关闭”以外,统统删去,拖出一个静态文本放在窗口的中间,注意这个静态文本的尺寸就足够大,否则无法容纳“鼠标处于X=?,Y=?的位置”这样的字体,如下图所示,这个不再展开赘述,可以参考我之前的《【mfc】学生信息管理,实现List控件节点的增删改查》()。
2、注意,要把静态文本的属性中的样式中的“排列文本”改成“居中”
3、拖完控件,开始添加鼠标响应、键盘响应的事件,下面只添加鼠标响应时间即可,键盘响应可以放在鼠标响应的函数内部的实现,添加响应事件的过程先选择“查看”-&“新建类向导”
4、之后则弹出如下的对话框,在右下角的Messages框中,找到WM_LBUTTONDOWN与WM_MOUSEMOVE,双击,或者单击后,选择右方的“Add Function”,之后点击确认或者Edit Code,即可,这里的意思是:告诉MFC,在这个对话框中点击鼠标的左键,移动鼠标,有响应的处理函数。
5、点击Edit Code则自动跳到ClassView中的代码页,点击“确定”的则要自己手动切过去,此时,在ClassView中就多了刚才我们自己添加的”响应类“,或者我更加喜欢称其为“响应函数”,反正你懂是什么就行了,我知道又有理论帝喷我不专业,反正你喜欢。点击这两个响应函数,分别写代码,这两个响应事件函数,请分别在原有的// TODO: Add your message handler code here and/or call default与CDialog::OnLButtonDown(nFlags,
point);之间写代码
6、对于void CMouseDlg::OnLButtonDown(UINT nFlags, CPoint point)要完成左击对话框就显示鼠标位置在哪里的使命,
见如下代码:
void CMouseDlg::OnLButtonDown(UINT nFlags, CPoint point)
// TODO: Add your message handler code here and/or call default
//可以用point.x,point.y这两个成员变量之间取出鼠标的位置,注意到,此函数的头,系统已经自动带入了鼠标类CPoint point
str.Format(&点下左键时,鼠标处于x=%d,y=%d的位置&,point.x,point.y);
AfxMessageBox(str);
CDialog::OnLButtonDown(nFlags, point);
7、对于void CMouseDlg::OnMouseMove(UINT nFlags, CPoint point)是鼠标移动时候的函数。
鼠标响应事件里面附带键盘响应时间就如下面所下,不为什么。
void CMouseDlg::OnMouseMove(UINT nFlags, CPoint point)
// TODO: Add your message handler code here and/or call default
//同理,取出鼠标的位置,放到静态文本中
str.Format(&鼠标处于x=%d,y=%d的位置&,point.x,point.y);
SetDlgItemText(IDC_STATIC,str);
//如果按下Ctrl而没有按下Shift
if((MK_CONTROL & nFlags) && !(MK_SHIFT & nFlags))
//设置对话框的标题为“按下了Ctrl在移动鼠标”
SetWindowText(&按下了Ctrl在移动鼠标&);
//如果没有按下Ctrl而按下Shift
else if (!(MK_CONTROL & nFlags) && (MK_SHIFT & nFlags))
SetWindowText(&按下了Shift在移动鼠标&);
//如果同时按下Ctrl与Shift
else if ((MK_CONTROL & nFlags) && (MK_SHIFT & nFlags))
SetWindowText(&按下了Ctrl+Shift在移动鼠标&);
//如果按下鼠标的右键
else if (MK_RBUTTON & nFlags)
SetWindowText(&按下了鼠标右键在移动鼠标&);
//如果什么都没有按下
SetWindowText(&mouse&);
CDialog::OnMouseMove(nFlags, point);
到这里编译之后,就完成了整个工程了,必须注意的是:
对于void CMouseDlg::OnLButtonDown(UINT nFlags, CPoint point)与void CMouseDlg::OnMouseMove(UINT nFlags, CPoint point)都是鼠标左击对话框一次与鼠标在对话框内移动一次就执行一次。
CString str,是Win32程序读有的字符串,设置其值的方式,请用其自带的Format()方法,因为其本质是类,不是一个单独的变量,不能直接等于
标签:&&&&&&&&&&&&&&&原文:http://blog.csdn.net/yongh701/article/details/
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!VC中同时响应鼠标单击和双击事件
导读:摘要:关于VC中同时响应鼠标单击和双击事件。步骤/方法  GetDoubleClickTime()先获得这个dbtime,然后判断用户两次鼠标点击时间间隔是否大于dbtime,如果大于等于响应单击,小于响应双击  ...
[ 责任编辑:gaosu ]
赞助商链接

我要回帖

更多关于 我需要你 的文章

 

随机推荐