急,如何在OnInitDialog函数中结束非模式对话框?

yangl79 yangl79 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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)等,可是该对话框根本不理会,并没有结束。
...全文
评论 5
收藏 已收藏
分享
返回顶部
yangl79
VC/MFC 16,550 成员 421,606 内容