gpt4 book ai didi

mfc - 检测 MFC 中的模态对话框

转载 作者:行者123 更新时间:2023-12-05 00:43:15 25 4
gpt4 key购买 nike

如何以编程方式检测我的 MFC 应用程序当前是否正在显示模式对话框或属性表?目前我正在使用以下内容,但我觉得该代码也会触发无模式对话框。

bool HasModalDialog(const CWnd* pWnd)
{
const CWnd* pChildWnd = pWnd ? pWnd->GetNextWindow(GW_HWNDPREV) : NULL;
while (pChildWnd)
{
if (pWnd == pChildWnd->GetTopLevelParent() &&
(pChildWnd->IsKindOf(RUNTIME_CLASS(CDialog)) ||
pChildWnd->IsKindOf(RUNTIME_CLASS(CPropertySheet))))
{
return true;
}

pChildWnd = pChildWnd->GetNextWindow(GW_HWNDPREV);
}

return false;
}

用法:
HasModalDialog(AfxGetMainWnd())

有人有检测模态对话框的替代方法吗?

最佳答案

你试过了吗 CWnd::GetLastActivePopup ?

我还没有测试过它是否只适用于模态对话框。

编辑 1:根据 Raymond Chen , GetLastActivePopup应该返回当前事件的模态对话框。

编辑 2:也许另一种检索当前模态窗口的方法是修改您的代码以检查禁用的父/所有者 - 模态对话框应始终 disable their owner在显示之前。

关于mfc - 检测 MFC 中的模态对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1298945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com