vc++ 对话框按钮控件,如何实现按下与抬起分别执行不同的功能? 50
需要实现的功能如下:>>按钮按下时,执行功能一>>按钮抬起时,执行功能二===========例如:对话框中有几十个按钮,需实现:按钮1按下时,对变量m_V1置true;...
需要实现的功能如下:>>按钮按下时,执行功能一>>按钮抬起时,执行功能二===========例如:对话框中有几十个按钮,需实现:按钮1 按下时,对变量 m_V1 置true;按钮1 抬起时,对变量 m_V1 置false;按钮2 按下时,对变量 m_V2 置true;按钮2 抬起时,对变量 m_V2 置false;按钮3 按下时,对变量 m_V3置true;按钮3 抬起时,对变量 m_V3 置false;=======网上现能搜到的都是(派生CButton的子类,处理WM_LBUTTONDOWN消息和WM_LBUTTONUP消息),只说到派生CButton子类,但没有派生后如何使用。派生CButton子类后,在主对话框中,各个按钮如何使用这些消息分别处理各自己的按下抬起的功能呢?============麻烦各位会的,帮忙在下面的例子文件中做个示范。-------已经做好派生CButton的例子文件:http://pan.baidu.com/s/1pLL8ZF1
展开
1个回答
展开全部
如果你只是需要“例如”里面的描述,那完全不需要自定义,直接使用单选框的按钮模式(Push Like)就可以了。
更复杂的,也不推荐自定义派生按钮类,这玩意太麻烦,还要注册入口,否则你需要为每个按钮都定义一组cpp文件才能各自响应,样式定制也不好。还不如直接使用CButtonST的图片模式实现多态更好些。
更复杂的,也不推荐自定义派生按钮类,这玩意太麻烦,还要注册入口,否则你需要为每个按钮都定义一组cpp文件才能各自响应,样式定制也不好。还不如直接使用CButtonST的图片模式实现多态更好些。
更多追问追答
追问
这是做工控监控画面的,画面的按钮必须同实体的按压式按钮一样的操作。即按钮按下不松开时,接通;按钮松开弹起后,断开。
单选框用Push like这种方式肯定不行的。这是就成了自锁式按钮了,就是按一下,一直接通;要再按一下才能关闭。这样不只是造成操作人员在操作上的不便,甚至可能会出意外的。
追答
“按下不松开”的具体情况是什么?手指或者鼠标始终处于按下状态?如果是这样,确实比较麻烦,不是常规MFC对话框模式可以解决的。因为在MFC对话框下,整个窗口是一个线程一个消息环,当按钮的按下状态保持不变,常规的处理方式会造成消息环锁住,其它消息无法及时响应,至少,无法产生“两个按钮同时按下”状态。
如果不考虑多按钮同时的问题并且只考虑鼠标操作,MFC对话框也可以做一个“简化”版,最简单的办法就是做图形化的假按钮,实际消息都是在对话框中处理。大致思路就是通过一组静态框绘制按钮,之后响应对话框的鼠标消息,在鼠标消息中判断鼠标位置和静态框的关系并绘制按下状态和控制“开关”消息。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询