如何在MFC中创建非交互窗口
时间:2020-03-05 18:49:22 来源:igfitidea点击:
在我的应用程序中,我有一个窗口,上面弹出带有小消息的窗口(认为类似于工具提示)。此窗口使用分层属性绘制Alpha背景等。
如果我同时打开多个窗口,然后用鼠标单击一个窗口,当它们消失时,它们将导致我的应用失去焦点(将焦点切换到当前窗口后面的应用)。
如何停止窗口中的任何交互?
解决方案
回答
在没有运气的情况下玩完" WM_NCACTIVATE"消息后,我覆盖了" WM_SETFOCUS"消息:
void CMyWindow::OnSetFocus(CWnd* pOldWnd) { if (pOldWnd != NULL) { pOldWnd->SetFocus(); } }
这似乎可以解决问题。不知道为什么它起作用!欢迎对此问题发表评论。
回答
之所以起作用,是因为OnSetFocus(像许多On *方法一样)使我们有机会在实际发生之前先占一个动作。焦点实际上从未切换到非交互式窗口。