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

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

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

有帮助吗?

解决方案 2

玩完后 WM_NCACTIVATE 消息没有运气,我覆盖了 WM_SETFOCUS 信息:

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

这似乎可以解决问题。不知道为什么它会起作用!欢迎对此问题发表评论。

其他提示

它之所以有效,是因为 OnSetFocus(与许多 On* 方法一样)使您有机会在操作实际发生之前抢占该操作。焦点实际上从未切换到非交互式窗口。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top