mfc 多个按钮 禁用 只响应当前按钮

在mfc 里用了3个按钮控件,关联变量mbnt1;mbnt2;mbnt3;每一个按钮按下先使得3个按钮全部disable禁用,执行完相应消息响应代码后在全部enable启用;如disable按钮代码为mbnt1.enablewindow(false);mbnt2.enablewindow(false);mbnt2.enablewindow(false);但是实际上在按钮1的消息响应里只有按钮1被disable,在按钮2的消息响应里只有按钮2被disable,按钮3同样,测试了很多次,enablewindow用关联变量或者是ID方法都试过,整个程序里有网络udp实时通信,串口实时通信,teechar实时画图,不知道什么问题,测试很多还没有解决求大神指点!!!

mfc

2个回答

自定义一个消息,比如BTN_CLICK
#define MY_BTN_CLICK WM_USER+201

在该对话框类中定义消息处理函数
ON_MESSAGE(MY_BTN_CLICK,OnMyBtnClickHandler)

在OnMyBtnClickHandler中接受按钮点击后发送出来的消息
接收到点击事件消息后,将所有按钮disable(根据按钮的句柄来操作,该对话框类可以操作这三个对话框句柄)

最后在在响应代码里面将所有的按钮全部启用就可以了

楼主的问题可能是在对点击事件的消息处理和按钮禁用环节有一些小问题

u012377333
一枪尽骚丶魂 回复weixin_35838529: 祝你早日解决bug~
2 年多之前 回复
weixin_35838529
weixin_35838529 虽然还没测试,一看就很有道理,是我之前没有想到的,所以先采纳了,非常感谢,悬赏不值什么,表达一下谢意!
2 年多之前 回复

void CnetassiDlg::OnBnClickedOk1()
{

GetDlgItem(IDC_EDIT6)->EnableWindow(false);
GetDlgItem(IDC_EDIT2)->EnableWindow(false);
GetDlgItem(IDC_CHECK3)->EnableWindow(false);
GetDlgItem(IDC_CHECK5)->EnableWindow(false);

我就是这样用的啊 你试试可以不
qq_33022399
一粒阳光--小猴子 点击一次以后按钮变灰,再次点击会等到这次点击事件运行完后重新运行再次点击的事件
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问