[英]How can I convert modal dialog window to non-modal dialog window in Qt?
[英]How can I set focus to a modal window from a disabled non-parent window in MFC?
我有一个带有多个窗口的应用程序。 当一个窗口打开一个模式对话框时,父窗口会自动被DoModal禁用。 我还通过调用EnableWindow(FALSE)禁用其他窗口。 但是,如果父窗口被另一个应用程序遮盖,并且用户单击了另一个窗口,则我想将焦点放在模式对话框上。 这可能吗? 如果是这样,我该怎么办? 我试图给用户一个视觉线索,表明该应用程序尚未挂起。 提前致谢。
好吧,当您禁用窗口时,可以防止用户与其进行交互。 因此,如果禁用除模式对话框之外的所有窗口,则将无法单击它们。 我认为您可能唯一的机会是为鼠标安装HookProc并尝试以这种方式拦截点击。 我不知道它是否行得通,但这是一个想法。
看来我找到了问题的解决方案。 在我的主窗口中实现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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.