最近项目需要我们实现在两个窗口间进行通信,其中有个小功能如图所示:
当我点击GDIProgram中的Button1时,会更新Dialog的Radio1和Radio2的状态。
Dialog中的Radio1和Radio2是一组单选按钮,Dialog中的Button1和Button2的单击事件都不会去更新Radio1和Radio2的状态。
当我执行以下操作步骤时
1)鼠标点击Radio1
2)点击GDIProgram中的Button1,此时会更新Dialog中单选按钮的状态,Radio2被选中
3)点击Dialog中的Button1时,Dialog中的单选按钮又被更新成了Radio1。(莫名其妙!!!!)
这种点击了一个Button却触发了Radio和Button的两个单击事件奇怪现象,百思不得其解。
调查了两天,还是没有找到原因。
但是我最终通过重绘Button解决了这个问题。
具体方法:
1)在CButton的OnLButtonUp函数中发送自定义消息MY_MSG,并将当前控件ID发送出来。
2)在父窗口中响应消息MY_MSG,根据不同的ID使用不同响应函数,替代原有的ON_BN_CLICKED消息响应。