MFC DLL中创建非模态子对话框,主窗口退出是出现异常
我使用MFC DLL创建了一个线程,然后在线程里创建了一个非模态子对话框
代码如下
void funcallback(void *pParam)
{
//g_DllDlg为子对话框对象,g_hWnd为主窗口句柄
g_DllDlg.Create(IDD_DIALOG1, CWnd::FromHandle(g_hWnd));
g_DllDlg.ShowWindow(SW_SHOW);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
BOOL CMFCDLLApp::InitInstance()
{
CWinApp::InitInstance();
m_pMainWnd = (CWnd*)&g_DllDlg;
_beginthread(funcallback, 0, NULL);
return TRUE;
return TRUE;
}
问题在于,如果先关掉子对话框,然后再关掉主窗口,就可以正常退出
如果不先关子对话框而直接关掉主窗口,则会发生异常,调试后发生异常发生在DestroyWindow()函数里。
ENSURE(pMap != NULL);
请问哪位大侠知道如果解决这个问题啊,谢谢!
[解决办法]
为什么非要关闭主窗口呢?
简单点儿,比如,可以把主窗口隐藏。
[解决办法]
窗口与线程相关联的。一个线程创建的窗口,不能在另一个线程中访问的,比如UpdateDate,DestroyWindow之类。要以通过PostMessage的方法退出窗口。
[解决办法]