如何在MFC中创建非交互式窗口

时间:2008-09-08 14:28:36

标签: mfc focus activation

在我的应用程序中,我有一个窗口,我在其上弹出小消息(想想类似于工具提示)。此窗口使用分层属性绘制alpha背景等。

如果我同时打开了几个这样的窗口,我用鼠标点击一个窗口,当它们消失时会导致我的应用程序失去焦点(它将焦点切换到当前窗口后面的应用程序)。

如何停止窗口中的任何互动?

2 个答案:

答案 0 :(得分:1)

在播放WM_NCACTIVATE消息后没有运气,我覆盖了WM_SETFOCUS消息:

void CMyWindow::OnSetFocus(CWnd* pOldWnd)
{
    if (pOldWnd != NULL)
    {
        pOldWnd->SetFocus();
    }
}

这似乎可以解决问题。不知道为什么它有效!欢迎就此问题发表评论。

答案 1 :(得分:1)

它的工作原理是因为OnSetFocus(与许多On *方法一样)使您有机会在实际发生之前抢先行动。焦点永远不会切换到非交互式窗口。