我做了类似的事情:
主题1:
pDlg = new CAxDialogImpl<A>();
// start thread2 here
主题2:
pDlg->Create();
while(GetMessage(&msg, 0, 0, 0) > 0)
{
...
}
这样的代码会导致崩溃。有人可以解释原因吗?
答案 0 :(得分:0)
它取决于创建基础窗口(HWND)的位置。如果CAxDialogImpl构造函数创建了窗口,那么它将存在于线程1上,并且它的消息无法在线程2上处理。如果CAxDialogImpl :: Create()方法创建了HWND,那么它将存在于线程2上,并且消息可能很愉快在那里处理。
实际崩溃发生在哪里?