您的位置:首页 > 其它

简述vc里响应button控件的lbuttondown事件的三种方法

2009-05-24 13:42 316 查看
好久没更新blog了,自己这段时间里一直东看看,西看看,技术也没什么大的长进,再加上我的那本本出了点问题,拿去修理了,所以现在一直处于蛮颓废的状态。好了,废话少说,总之,自己振奋下吧。

虽然技术没什么长进,还是研究下了vc,vc里想响应按钮的mousedown事件可不是件容易的事情啊,自己还是查了很多资料,并且自己好好研究了一番,现在把我所了解的方法和大家分享下。

一:

从cbutton类派生出一个子类,插入-----类,里面设置下就行了,然后按ctrl+w打开类向导,为你的button设置个变量,在类型里面选你刚才派生类的名字(注意要在你的工程头文件里添加派生类的头文件),然后在在消息映射栏里选择你刚才的派生类,这时在选择相应的事件即可,基本上向导自动操作,除了事件里的代码,基本上代码无需你人为添加。

二:

步骤和方法一是一样的,只不过不要为按钮添加变量,而是你在工程的头文件里手动添加派生类的变量(比如mybutton a;),然后在窗体的初始化代码里添加代码:

a.SubclassDlgItem(你的按钮id,this);

完成子类化设置即可。



三:

前面两种方法都有局限性,无法同时为多个button提供lbuttondown事件,那么我们看下面的方法。重载窗体的PreTranslateMessage方法,添加下面代码,

if(pMsg->hwnd==((CButton*)this->GetDlgItem(IDC_BUTTON1))->m_hWnd && pMsg->message==WM_MOUSEMOVE)
::AfxMessageBox("s");


这样用if或者switch判断,就可以很方便的为多个不同的button提供不同的响应代码。







先写到这里,上面的三种方法我也是花了一晚上的时间才总结出来的,测试环境为vc++6。0 。文章有不妥之处螟害望大家多多指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: