MFC DLL中创建非模态子对话框,主窗口退出是出现错误

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的方法退出窗口。
------解决方案--------------------
探讨
窗口与线程相关联的。一个线程创建的窗口,不能在另一个线程中访问的,比如UpdateDate,DestroyWindow之类。要以通过PostMessage的方法退出窗口。

------解决方案--------------------
父窗口句柄都销毁了,子窗口肯定会有问题啊
创建的时候不就是用到父窗口了嘛
g_DllDlg.Create(IDD_DIALOG1, CWnd::FromHandle(g_hWnd));