在我的应用程序中,我有一个弹出窗口,上面有小消息(类似于工具提示)。此窗口使用分层属性来绘制 alpha 背景等。
如果我同时打开了几个这样的窗口,然后用鼠标单击一个,当它们消失时,它们会导致我的应用程序失去焦点(它将焦点切换到当前窗口后面的应用程序)。
如何停止窗口中的任何交互?
在我的应用程序中,我有一个弹出窗口,上面有小消息(类似于工具提示)。此窗口使用分层属性来绘制 alpha 背景等。
如果我同时打开了几个这样的窗口,然后用鼠标单击一个,当它们消失时,它们会导致我的应用程序失去焦点(它将焦点切换到当前窗口后面的应用程序)。
如何停止窗口中的任何交互?
在没有运气的情况下播放WM_NCACTIVATE
消息后,我覆盖了该WM_SETFOCUS
消息:
void CMyWindow::OnSetFocus(CWnd* pOldWnd)
{
if (pOldWnd != NULL)
{
pOldWnd->SetFocus();
}
}
这似乎可以解决问题。不知道为什么它会起作用!欢迎就该问题发表评论。
它之所以有效,是因为 OnSetFocus(与许多 On* 方法一样)让您有机会在动作实际发生之前抢占它。焦点永远不会真正切换到您的非交互式窗口。