Обнаружение модальных диалогов в 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())
У кого-нибудь есть альтернативный способ определения модальных диалогов?