急求救! 在自己创建的线程中,无法用GetMessage获取到自定义的消息
具体情况如下:
1. BUTTON的响应函数中创建一个线程
void CMy8902_TestDlg::OnBnClickedStartTest()
{
m_TestThread=AfxBeginThread( (AFX_THREADPROC)TestThread,(LPVOID)this );
}
2.线程函数中有如下一段代码(关键是那个 while(GetMessage(&msg.. 那一段):
pColorTestDlg=new CDialogColorTest(this);
pColorTestDlg->Create(IDD_DIALOG_COLOR_TEST);
pColorTestDlg->ModifyStyle(WS_CAPTION|WS_BORDER|WS_DLGFRAME|WS_THICKFRAME,0,0);
pColorTestDlg->CenterWindow(GetDesktopWindow());
int WINDOW_W= ::GetSystemMetrics(SM_CXSCREEN);
int WINDOW_H= ::GetSystemMetrics(SM_CYSCREEN);
pColorTestDlg->SetWindowPos(NULL, -3, -3, WINDOW_W+5, WINDOW_H+5, SWP_SHOWWINDOW);
#if 1 //如下关键代码
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
if(WM_TEST_FINISHED == msg.message)
{
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
#endif
delete pColorTestDlg;
pColorTestDlg=NULL;
注:WM_TEST_FINISHED 消息是由CDialogColorTest消息在销毁自己时发生的。
现在的问题是,如果把线程代码移到OnBnClickedStartTest中一点问题没有,但在线程中,while(GetMessage(&msg, NULL, 0, 0))不会捕捉到 WM_TEST_FINISHED
原因麻烦各位看我昨天的帖子
http://topic.csdn.net/u/20120222/15/a70e2e05-19b8-41ba-98de-444d17f5e96f.html
多谢各位了!!