VS2008 ON_THREAD_MESSAGE 报错?该怎么解决
VS2008 ON_THREAD_MESSAGE 报错?
.h
#define WM_CHARMSG WM_USER + 101
...
afx_msg void OnShowMsg( WPARAM wParam, LPARAM lParam );
.cpp
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_THREAD_MESSAGE( WM_CHARMSG, OnShowMsg )
END_MESSAGE_MAP()
void CTestDlg::OnShowMsg( WPARAM wParam, LPARAM lParam )
{
return ;
}
提示:
error C2440: “static_cast”: 无法从“void (__thiscall CTestDlg::* )(WPARAM,LPARAM)”转换为“void (__thiscall CWinThread::* )(WPARAM,LPARAM)”
网上搜了下说用ON_MESSAGE代替,可是我用了,进程却收不到消息了。
------解决方案--------------------
用ON_MESSAGE
收不到消息,应该是你发送消息的窗口指针或句柄不对造成的
------解决方案--------------------
你要用PostThreadMessage,就不要.下面这些
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_THREAD_MESSAGE( WM_CHARMSG, OnShowMsg )
END_MESSAGE_MAP()
.h
#define WM_CHARMSG WM_USER + 101
...
afx_msg void OnShowMsg( WPARAM wParam, LPARAM lParam );
.cpp
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_THREAD_MESSAGE( WM_CHARMSG, OnShowMsg )
END_MESSAGE_MAP()
void CTestDlg::OnShowMsg( WPARAM wParam, LPARAM lParam )
{
return ;
}
提示:
error C2440: “static_cast”: 无法从“void (__thiscall CTestDlg::* )(WPARAM,LPARAM)”转换为“void (__thiscall CWinThread::* )(WPARAM,LPARAM)”
网上搜了下说用ON_MESSAGE代替,可是我用了,进程却收不到消息了。
------解决方案--------------------
用ON_MESSAGE
收不到消息,应该是你发送消息的窗口指针或句柄不对造成的
------解决方案--------------------
你要用PostThreadMessage,就不要.下面这些
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_THREAD_MESSAGE( WM_CHARMSG, OnShowMsg )
END_MESSAGE_MAP()