如何禁用CBitmapButton?我尝试使用m_bitmapbutton.EnableWindow(false);但它不起作用。它仍然会引发一场事件。
我要做的是阻止按钮A在事件B执行时触发事件A(来自按钮B)。所以在事件B中,我想禁用Button A.
答案 0 :(得分:1)
以下是要检查的事项列表:
您总是可以设置一个布尔成员变量来指示按钮A被禁用,并忽略设置此布尔成员时发送给它的任何事件。
使用this class from CodeProject可能更容易。
答案 1 :(得分:0)
我认为问题在于,当您参加事件B时,不会调度此窗口的消息。因此,在您完成参加活动B并且您再次启用按钮A后,他们将排队并进行调度。这样的事情:
这不仅仅是CBitmapButton的一个问题......它应该与任何其他按钮发生碰撞(我没有尝试过自己)。
可能的解决方法可能是在再次启用按钮之前为此窗口调度鼠标事件...虽然我不太喜欢这样的事情......也许有人可以给你一个更好的解决方案:
void CMyDlg::OnBnClickedButtonB()
{
m_buttonA.EnableWindow(FALSE);
//Process button B clicked event
MSG msg;
while(PeekMessage( &msg,
GetSafeHwnd(),
WM_MOUSEFIRST,
WM_MOUSELAST,
PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
m_buttonA.EnableWindow(TRUE);
}
希望这有帮助!
哈维尔