Wykrywanie dialogów modalnych w MFC
Jak mogę programowo wykryć, czy moja aplikacja MFC aktualnie wyświetla modalne okno dialogowe lub arkusz właściwości? Obecnie używam poniższego, ale czuję, że kod również uruchamia się w modelowych dialogach.
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;
}
Stosowanie:
HasModalDialog(AfxGetMainWnd())
Czy ktoś ma alternatywny sposób wykrywania modalnych okien dialogowych?