主线程为什么收不到工作线程的消息 ?该怎么处理

主线程为什么收不到工作线程的消息 ?????????
这是一个对话框程序.

在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;
}

关于自定义消息的其他步骤都齐全,不再说明




------解决方案--------------------
你应该通过一些办法确定哪步出了问题
是消息没有发出去,还是发出去了没有收到,还是收到了处理的不正确?
------解决方案--------------------
线程正常启动了吗?
if(需要显示)正确进入了吗?
可以增加几个messagebox看看阿
------解决方案--------------------
在线程中PostThreadMessage试试

------解决方案--------------------
或者改称SendMessage
------解决方案--------------------
改成static_cast <LPVOID> (this)试下
------解决方案--------------------
CWinThread* pThreadAD=AfxBeginThread(ThreadAD,
NULL,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);

最后一个参数该城0