我自定义一个消息
做了一个线程A(trea.h),发送消息
trea.h
#define WM_MY_MESSAGE (WM_USER+100)//定义一个消息号
UINT park(LPVOID pParam)
{
CMytoolDoc *pDoc = (CMytoolDoc *)pParam;//建立与视图文档的联系
CMytoolView *pView =(CMytoolView *)pParam;
pView->PostMessage(WM_MY_MESSAGE,0,0);//发送消息
}*******************************************************************
在文件CMytoolView.cpp中调用线程A发送消息
void CMytoolView::Onjian() //调用线程A,发送消息
{
AfxBeginThread(park,this);
}
**************************************************************1、在messView.h中定义一个消息号
#define WM_MY_MESSAGE (WM_USER+100)
class CmessView : public CTreeView
{
protected:
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); //消息响应函数
DECLARE_MESSAGE_MAP()
};
2、在messView.cpp中添加消息映射:
BEGIN_MESSAGE_MAP(CMessView, CView)
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)//我加的消息映射
END_MESSAGE_MAP()
3、接收消息messView.cpp
LRESULT CmessView::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
AfxMessageBox("收到消息!",MB_OK);
return 0;
}
**************************************************************但正常运行后,执行了pView->PostMessage(WM_MY_MESSAGE,0,0);//发送消息
却没有收到消息,也就是 AfxMessageBox("收到消息!",MB_OK)没执行;没弹出对话框"收到消息!",这是怎么回事啊???
做了一个线程A(trea.h),发送消息
trea.h
#define WM_MY_MESSAGE (WM_USER+100)//定义一个消息号
UINT park(LPVOID pParam)
{
CMytoolDoc *pDoc = (CMytoolDoc *)pParam;//建立与视图文档的联系
CMytoolView *pView =(CMytoolView *)pParam;
pView->PostMessage(WM_MY_MESSAGE,0,0);//发送消息
}*******************************************************************
在文件CMytoolView.cpp中调用线程A发送消息
void CMytoolView::Onjian() //调用线程A,发送消息
{
AfxBeginThread(park,this);
}
**************************************************************1、在messView.h中定义一个消息号
#define WM_MY_MESSAGE (WM_USER+100)
class CmessView : public CTreeView
{
protected:
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); //消息响应函数
DECLARE_MESSAGE_MAP()
};
2、在messView.cpp中添加消息映射:
BEGIN_MESSAGE_MAP(CMessView, CView)
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)//我加的消息映射
END_MESSAGE_MAP()
3、接收消息messView.cpp
LRESULT CmessView::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
AfxMessageBox("收到消息!",MB_OK);
return 0;
}
**************************************************************但正常运行后,执行了pView->PostMessage(WM_MY_MESSAGE,0,0);//发送消息
却没有收到消息,也就是 AfxMessageBox("收到消息!",MB_OK)没执行;没弹出对话框"收到消息!",这是怎么回事啊???
解决方案 »
- 为什么在我的类向导CMainFrame里没有WM_DRAWITEM消息?
- 如何实现next按钮功能来得到同一路径下,下一个文件的打开。
- 小弟,我最近要写一个邮件代理程序,具体 是pop3 Server部分,,能不能给个思路,,或者,,有代码和资料的更好,,能否介绍或者发给我谢谢了.....
- 大手大脚之数据库使用基本篇
- 如何设置系统时间??
- 请问:_RecordsetPtr pRecordset 可不可以多次打开?
- 可不可以写出这个SQL语句
- 文件操作
- 如何在tc编写一个函数strcmp,用来比较两个字符串的大小?
- 请教RTF文件词法分析器???
- VC中在SQLITE中查询数据是否支持中文显示?
- 在其它程序窗口实现输入
UINT park(LPVOID pParam)
{
CMytoolDoc *pDoc = (CMytoolDoc *)pParam;//建立与视图文档的联系
CMytoolView *pView =(CMytoolView *)pParam;
pView->PostMessage(WM_MY_MESSAGE,0,0);//发送消息
}
消息是发送给CMytoolView对象的,CmessView当然收不到
用CMytoolView调用了发送消息的线程trea.h
要么 ::PostMessage( hwnd,MESSAGE, w,l);
要么 wndclass->PostMessage( MESSAGE, w, l );其中hwnd是接收窗体的窗口句柄, wndclass是窗口hwnd的类对象
#define WM_MY_MESSAGE (WM_USER+100)//定义一个消息号
UINT park(LPVOID pParam)
{ CmessView *pView ;
pView->PostMessage(WM_MY_MESSAGE,0,0);//发送消息给CmessView
}
CmessView也收不到消息,这是什么原因?
BEGIN_MESSAGE_MAP(CMessView, CView)
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)//我加的消息映射
END_MESSAGE_MAP()
里面有你想要的
在park函数中:
UINT park(LPVOID pParam)
{
CMessView *pView =(CMytoolView *)pParam;
pView->PostMessage(WM_MY_MESSAGE,0,0);//发送消息
}
UINT park(LPVOID pParam)
{
CMessView *pView =(CMessView *)pParam;
pView->PostMessage(WM_MY_MESSAGE,0,0);//发送消息
}
我怀疑,是不是我在trea.h中发送消息导致消息发送到哪都不知道了?
是不是必须在CPP文件中发送消息?