//header
class CUIThread : public CWinThread
{
DECLARE_DYNCREATE(CUIThread)protected:
CUIThread();           // 动态创建所使用的受保护的构造函数
virtual ~CUIThread();public:
virtual BOOL InitInstance();
virtual int ExitInstance();
CTipInfoDlg       m_dlg;   afx_msg LONG OnChangeText(UINT wParam,LONG lParam);
protected:
DECLARE_MESSAGE_MAP()
};//source
IMPLEMENT_DYNCREATE(CUIThread, CWinThread)CUIThread::CUIThread()
{
}CUIThread::~CUIThread()
{
}BEGIN_MESSAGE_MAP(CUIThread, CWinThread)
ON_MESSAGE(WM_CALCULATE,OnChangeText) //出错
         ON_THREAD_MESSAGE(WM_CALCULATE,OnChangeText)//也试过,不行
END_MESSAGE_MAP()
 
 LONG CUIThread::OnChangeText(UINT wParam,LONG lParam)
 {
  CString* m_text = (CString*)wParam;
 
  CString* pstr = (CString*)wParam;
  CString sTipInfo(*pstr);
 
  m_dlg.m_ProcessStr = sTipInfo;
  m_dlg.ReStartProcess(TRUE);
 
  return 0;
 }创建了一个继承类,可是再写消息响应的是否出现错误,如下
error C2440: 'static_cast' : cannot convert from 'LONG (__thiscall CUIThread::* )(UINT,LONG)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
急等

解决方案 »

  1.   

    afx_msg static LONG OnChangeText(UINT wParam,LONG lParam); 
      

  2.   

    afx_msg LRESULT OnChangeText(WPARAM wParam, LPARAM lParam);
      

  3.   

    这种我试过,也是不行。
    error C2440: 'static_cast' : cannot convert from 'LRESULT (__thiscall CUIThread::* )(WPARAM,LPARAM)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
      

  4.   

    ON_THREAD_MESSAGE(WM_CALCULATE,OnChangeText)
      

  5.   

    afx_msg void OnChangeText(WPARAM wParam, LPARAM lParam);ON_THREAD_MESSAGE(WM_CALCULATE,OnChangeText)
      

  6.   

    终于出来了,谢谢大家了? 
    不过还是想在问一个问题,因为程序运行时间较长,想用一个进度条表示一下,查找了一些资料,发现很多都是用主线程来显示进度条, 
    用次线程进行程序的运算,我也尝试过,但是运行速度慢了不少.想问问大家有没有什么别的方法?利用分线程给主线程发送消息,在主线程里OnTimer()里设置进度