MSDN中说非模式应该用DestroyWindow,不要用EndDialog,可是我一用DestroyWindow就出现断言错,如下:DWORD CWnd::GetStyle() const
{
ASSERT(::IsWindow(m_hWnd)); //这个断言 if (m_pCtrlSite == NULL)
return (DWORD)GetWindowLong(m_hWnd, GWL_STYLE);
else
return m_pCtrlSite->GetStyle();
}如果忽略错误继续运行,还有下面的断言错
_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const
{ ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }请问如何解决,我是一定要在OnInitDialog中结束对话框,因为其中可能出现致命错误,至少也能不让用户做任何操作就能结束对话框,不可能让用户点个按钮再结束,我试过,在别的函数中调用DestroyWindow没有问题,例如在一个按钮的点击事件中调用就没有问题。我尝试过在OnInitDialog中发送消息,用过PostMessage(WM_QUIT)、PostMessage(WM_DESTROY)、PostQuitMessage(0)等,可是该对话框根本不理会,并没有结束。