【问题标题】:Is there an equivalent of an OnModal message in MFC?MFC 中是否有等效的 OnModal 消息?
【发布时间】:2015-02-20 17:45:35
【问题描述】:

我的 MFC 应用程序有多个顶级(桌面的父级)窗口,其中任何一个都可以承载可以启动模式对话框的外部应用程序。当其他任何一个成为模态时,有没有办法让其他顶级窗口获得通知?

我的具体问题是我的一个窗口托管了嵌入式 PDF 查看器,当用户单击打印时,只有托管查看器的窗口被锁定,其他窗口不被锁定。

【问题讨论】:

  • Windows 不会变成 modal,它们会被停用。窗口在停用时会收到WM_ACTIVATE 消息。

标签: winapi mfc modal-dialog


【解决方案1】:

当显示模式对话框时,会为父级调用 EnableWindow(FALSE)。它现在已停用,不会接受任何鼠标输入。它也不会收到键盘焦点。

当 EnableWindow(FALSE) 被调用 WM_ENABLE 并且 wParam==FALSE 被发送到窗口。

当您的父母收到此消息时,您也可以为所有其他窗口调用 EnableWindow(FALSE)。递归在这里可能是个问题,但您可以使用私有窗口消息或标志来防止这种情况发生。

在模式对话框关闭之前,再次调用 EnableWndow(TRUE) 并再次发送 wParam==TRUE 的 WM_ENABLE。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多