你如何禁用 CBitmapButton?我尝试使用 m_bitmapbutton.EnableWindow(false); 但它不起作用。它仍然会触发一个事件。
如果事件 B 正在执行(从按钮 B),我想要做的是阻止按钮 A 触发事件 A。所以在事件 B 中,我想禁用按钮 A。
你如何禁用 CBitmapButton?我尝试使用 m_bitmapbutton.EnableWindow(false); 但它不起作用。它仍然会触发一个事件。
如果事件 B 正在执行(从按钮 B),我想要做的是阻止按钮 A 触发事件 A。所以在事件 B 中,我想禁用按钮 A。
以下是要检查的事项列表:
您总是可以只设置一个布尔成员变量来指示按钮 A 已禁用,并在设置此布尔成员时忽略发送给它的任何事件。
从 CodeProject 使用此类可能更容易。
我想问题是当你参加活动 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);
}
希望这有帮助!
哈维尔