主线程为什么收不到工作线程的消息 ?????????
这是一个对话框程序.
在MyDlg.cpp中有:
一个按钮,用于启动工作线程ThreadAD按钮IDC_RUN,有函数如下:
void CEventTest2Dlg::OnRun()
{
CWinThread* pThreadAD=AfxBeginThread(ThreadAD,
NULL,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
}
在工作线程ThreadAD中,采集数据,如果需要显示的话,给主线程发送消息(自定义的)
UINT ThreadDA(LPVOID pParam)
{
......
if(需要显示)
{
::PostMessage(hwnd,WM_VOLTAGEDISPLAY,某某,NULL);
//需要显示就发送WM_VOLTAGEDISOPLAY
// hwnd 是HWND 全局变量
// 在CEventTest2Dlg::OnInitDialog()中
// hwnd = AfxGetMainWnd()->GetSafeHwnd();
}
}
WM_VOLTAGEDISPLYAY消息处理函数:
LRESULT CEventTest2Dlg::OnVoltageDisplay(WPARAM wParam, LPARAM lParam)
{
CString str;
str.Format("%4.2f",g_oldVoltageDisplay);
GetDlgItem(IDC_EDIT_VOLTAGEDISPLAY)->SetWindowText(str);
return 0;
}
关于自定义消息的其他步骤都齐全,不再说明