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

Posted

技术标签:

【中文标题】如何在 MFC 中创建非交互式窗口【英文标题】:How to create a non-interactive window in MFC 【发布时间】:2010-09-08 04:00:18 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

它之所以有效,是因为 OnSetFocus(与许多 On* 方法一样)让您有机会在动作实际发生之前先发制人。焦点永远不会真正切换到您的非交互式窗口。

【讨论】:

【参考方案2】:

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

void CMyWindow::OnSetFocus(CWnd* pOldWnd)

    if (pOldWnd != NULL)
    
        pOldWnd->SetFocus();
    

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

【讨论】:

以上是关于如何在 MFC 中创建非交互式窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual C ++中创建非托管Windows GUI?

如何在 Create Table 中创建非聚集索引?

如何在 Ejabberd 中创建非匿名房间 [关闭]

如何在 .NET 中创建非 OwnerDraw 按钮?

如何在mfc项目中创建新窗口

如何在 Visual Studio 2019 C++ 中创建非虚拟文件夹