我有一个带有多个窗口的应用程序。当一个窗口打开模式对话框时,父窗口将自动被DoModal禁用。我还通过调用EnableWindow(FALSE)禁用其他窗口。但是,如果父窗口被另一个应用程序遮挡,并且用户点击其他窗口之一,我想将焦点放在模态对话框上。这可能吗?如果是这样,我该怎么做?我试图给用户一个应用程序没有挂起的视觉线索。提前谢谢。
答案 0 :(得分:0)
好吧,当您禁用窗口时,会阻止用户与其进行交互。因此,如果禁用除模式对话框之外的所有窗口,则无法单击它们。我想也许你唯一的机会就是为鼠标安装一个HookProc并尝试以这种方式拦截点击。我不知道它是否有效,但这是一个想法。
答案 1 :(得分:0)
看起来我找到了问题的解决方案。在我的主窗口中实现OnMouseActivate,PreTranslateMessage和OnActivate可以解决问题,就像这样......
int CCVMDIChild::OnMouseActivate(CWnd* desktopWindow, UINT hitTest, UINT message)
{
if (m_IsDisabled)
{
CWnd* inDialogWindow = GetAppData()->GetInDialogWindow(); // Pointer to the parent of the modal dialog
if (inDialogWindow != nullptr)
{
inDialogWindow->GetLastActivePopup()->SetFocus();
inDialogWindow->GetLastActivePopup()->FlashWindowEx(FLASHW_CAPTION, 5, 50);
}
return MA_NOACTIVATE;
}
return CDocFrame::OnMouseActivate(desktopWindow, hitTest, message);
}