dll中有个窗口,其他线程发消息关闭不了
MFC dll中封装了个窗口,窗口是在一工作线程中DoModal创建显示的。
窗口显示运行很正常,手动点击关闭按钮也能正常关闭释放(DoModal返回),
但有个奇怪的问题,其他线程往这个窗口发消息,窗口处理消息关闭窗口,会有问题:窗口不见了,但DoModal还是阻塞在那,没有返回,跟踪进去,发现是阻塞在 ::DestroyWindow的api调用。
有高手指点一二,是啥问题。
我的窗口工作线程:
DWORD WINAPI DlgThread(LPVOID param)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CXXDlg dlg;
dlg.DoModal();
return 0;
}
我还尝试在其他线程发的消息处理里,定义了个定时器,在定时器里关闭窗口,也是同样的问题。
而我在窗口的OninitDialog里设置个定时器,却能正常关闭。
void CXXDlg::OnTimer(UINT nId)
{
__super::OnCancel();
}