0

我做了这样的事情:

线程 1:

pDlg = new CAxDialogImpl<A>();
// start thread2 here

线程 2:

pDlg->Create();

while(GetMessage(&msg, 0, 0, 0) > 0)
{
 ...
}

这样的代码会导致崩溃。有没有人可以解释为什么?

4

1 回答 1

0

这取决于创建基础窗口 (HWND) 的位置。如果 CAxDialogImpl 构造函数创建窗口,那么它将存在于线程 1 上,并且无法在线程 2 上处理它的消息。如果 CAxDialogImpl::Create() 方法创建了 HWND,那么它将存在于线程 2 上并且消息可以愉快在那里处理。

实际崩溃发生在哪里?

于 2012-08-29T22:45:26.610 回答