MFC MDI应用程序中如何禁止激活其他文件?

Posted

技术标签:

【中文标题】MFC MDI应用程序中如何禁止激活其他文件?【英文标题】:How to forbid activation of other documents in MFC MDI application? 【发布时间】:2014-08-26 14:15:09 【问题描述】:

我有一个 MFC mdi 应用程序。创建多个文档后,我想在某个时候禁止激活另一个文档(使用 ctrl+tab 或简单地单击另一个文档的客户区或其他东西进行激活)。

似乎可以处理一些消息以完成此操作: msg = WM_COMMANDwParam = SC_NEXT, SC_PREV 等。

但这些消息的处理不会阻止通过单击另一个文档的客户端进行的激活。对于这种情况,所有通知都是在实际激活后收到的。

到目前为止,我找到的唯一解决方案是使用鼠标挂钩,但我更喜欢更优雅的东西。

我怎样才能完全停止激活另一个文档(通过鼠标单击或其他方式)?

重新激活之前的文档不是一个可接受的解决方案。

【问题讨论】:

【参考方案1】:

尝试回复WM_MOUSEACTIVATE message 并返回MA_NOACTIVATEMA_NOACTIVATEANDEAT

【讨论】:

以上是关于MFC MDI应用程序中如何禁止激活其他文件?的主要内容,如果未能解决你的问题,请参考以下文章

MFC MDI 收集“应用”按钮例程的控制状态

MFC项目组合:如何将没有文档类的SDI应用程序添加到MDI应用程序中?应该使用子窗口吗?[MFC]

MDI 应用程序 MFC 中文档的多个视图

如何让您的 MDI MFC 应用程序在任务栏中显示一个实例?

MFC MDI 无打开文档 = 禁用新文件

保存工作区 MFC C++ MDI