如何在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 *方法一样)使我们有机会在实际发生之前先占一个动作。焦点实际上从未切换到非交互式窗口。