模態對話框我如何編程方式檢測如果我MFC應用程序目前正在顯示一個模式對話框或屬性表?目前我正在使用以下內容,但我覺得代碼也會觸發無模式對話框。檢測在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())
任何人得到的檢測模態對話框一個替代方式?
我看不到您的代碼實際檢測到模態對話框。如果CDialog或CPropertySheet是「創建」d,那麼它將是非模態的,並且您的代碼仍然會返回true。 – Goz 2009-08-19 12:41:23
@Goz:這是代碼遭受的問題。 – dalle 2009-08-19 13:17:09