我创建了一个线程类CRecThread (class CRecThread : public CWinThread) 想在此线程中 向DIALOG发消息 大家帮忙!!我的程序是个一个DIALOG 对话框程序,在对话框上的A按钮中有:
CRecThread* pRecThread=(CRecThread*)AfxBeginThread(RUNTIME_CLASS(CRecThread),THREAD_PRIORITY_HIGHEST,0,CREATE_SUSPENDED,NULL);pRecThread->ResumeThread();子线程类如下
class CRecThread : public CWinThread
{
DECLARE_DYNCREATE(CRecThread)
public:
CRecThread(void);
~CRecThread(void);
    protected:
DECLARE_MESSAGE_MAP()
public:
virtual int ExitInstance();
virtual BOOL InitInstance();
virtual int Run();
};

int CRecThread::Run()
{
  。。
  
  while(true)
 {  ................  //CODE A
  ........................ }
  。
   RETURN 0
}
1。我用的开发环境是VC++2003,用什么方法实现,具体点!!是用 ::PostMessage((HWND)(GetMainWnd()->GetSafeHwnd()),WM_DISPLAY,nTmpt,NULL)第一个参数怎么设置呢? 怎么得到DIALOG的句柄呢?

解决方案 »

  1.   

    CWinThread::GetMainWnd 
    ...
    If your application is not an OLE server, then calling this function is equivalent to directly referring to the m_pMainWnd member of your application object.
    ...
      

  2.   

    但是WM_DISPLAY在哪里定义呢? 是在DIALOG 中吗? 如果在 DIALOG中定义,那么在::PostMessage(。。,WM_DISPLAY,nTmpt,NULL) 后 弹出错误,提示找不到 WM_DISPLAY??
      

  3.   

    class CRecThread : public CWinThread 是用户界面线程,那么它就不可以给DIALOG 发消息吗???
      

  4.   

    第一个参数AfxGetMainWnd()->m_hWnd