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

      好久没更新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  。文章有不妥之处螟害望大家多多指正。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值