今天碰到的问题非常奇怪。
就是 使用 vs2003.net 新建一个支持 mfc 的工程,
在主线程下面加一个循环 PeekMessage,如下: // 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("致命错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
MSG m;
while ( TRUE )
{
PeekMessage(&m, NULL, 0, 0, PM_NOREMOVE);
}
}
退出的时候就出问题了,CWinApp 析构的时候当调用到:
CThreadSlotData::GetThreadValue(int nSlot)
时,发现传进来的 nSlot 值是一个随机的值,出了一个ASSERT但我上面的代码几乎什么也没做啊,只是Peek一下,而且 PM_NOREMOVE 不删除消息。有人了解是什么原因吗?烦请告之一下。