2016年5月5日 星期四

[MFC] Close all popup modal dialog

關閉應用程式的時候需要順便把DoModal dialog一起順便關閉,不然應用程式會等待dialog的Close事件才會結束應用程式。
void ClosePopupDialog()
{
HWND hWndParent = NULL;
HWND hWndChild = ::GetWindow(this->m_hWnd, GW_ENABLEDPOPUP);
if (hWndChild)
{
do
{
hWndParent = ::GetParent(hWndChild);
CWnd *pWnd = CWnd::FromHandle(hWndChild);
pWnd->EndModalLoop(0); // stop modal thread
::EndDialog(hWndChild, 0); // close dialog
hWndChild = hWndParent;
} while (hWndParent != this->m_hWnd);
}
}

沒有留言:

張貼留言