我的MFC应用程序有多个顶级(桌面的父级)窗口,其中任何一个都可以托管可以启动模式对话框的外部应用程序。有没有办法让其他顶级窗口在任何其他窗口变为模态时获得通知?
我的具体问题是我的一个窗口是托管嵌入式PDF查看器,当用户点击打印时,只有托管查看器的窗口被锁定,而不是其他窗口。
答案 0 :(得分:1)
当显示模态对话框时,将为父级调用EnableWindow(FALSE)。它现在已停用,不接受任何鼠标输入。它也不会获得键盘焦点。
当调用EnableWindow(FALSE)时,{Pamp = = FALSE的WM_ENABLE被发送到窗口。
当您的父母收到此消息时,您也可以为所有其他窗口调用EnableWindow(FALSE)。递归可能是一个问题,但您可以使用私有窗口消息或标志来防止这种情况。
在模态对话框关闭之前,再次调用EnableWndow(TRUE)并再次发送带有wParam == TRUE的WM_ENABLE。