因为小弟要处理两个自定义消息,所以采用下面的处理方法,可不知道哪里出问题了,小弟用PostMessage发送的消息在自定义消息处理函数中怎么也获取不到,而且PostMessage也发送成功了。1、在CNewGPRSDlg.h文件的//{{AFX_MSG(CNewGprsDlg)和//}}AFX_MSG之间添加代码afx_msg LRESULT OnMessageManager(WPARAM wParam, LPARAM lParam);2、在CNewGPRSDlg类(对话框类的主窗口)中实现自定义消息,消息原型为
LRESULT CNewGPRSDlg::OnMessageManager(WPARAM wParam, LPARAM lParam)
{......}
3、在CRWSock中定义自定义消息代号
#define WM_ONLINE_MESSAGE (WM_USER+102)
4、在CRWSock的头文件中添加以下代码
BEGIN_MESSAGE_MAP(CRWSock, CSocket)
//{{AFX_MSG_MAP(CRWSock)
ON_MESSAGE(WM_ONLINE_MESSAGE, OnMessageManager) //此行代码是我添加的
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
5、在CRWSock的一个方法中调用自定义消息,代码如下
HWND m_wnd;
m_wnd=FindWindow(NULL,"MyWindow"); //MyWidnow是对话框的标题名
if (m_wnd!=NULL)
{
if (PostMessage(m_wnd,WM_ONLINE_MESSAGE,(WPARAM)CMD,(LPARAM)this)<=0)
{
AfxMessageBox("发送消息失败!");
}
}
PostMessage在发送消息时返回值是大于0的值说明发送成功了,可为什么OnMessageManager方法收不到呢?请各位朋友帮忙看看是哪里出错了?
LRESULT CNewGPRSDlg::OnMessageManager(WPARAM wParam, LPARAM lParam)
{......}
3、在CRWSock中定义自定义消息代号
#define WM_ONLINE_MESSAGE (WM_USER+102)
4、在CRWSock的头文件中添加以下代码
BEGIN_MESSAGE_MAP(CRWSock, CSocket)
//{{AFX_MSG_MAP(CRWSock)
ON_MESSAGE(WM_ONLINE_MESSAGE, OnMessageManager) //此行代码是我添加的
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
5、在CRWSock的一个方法中调用自定义消息,代码如下
HWND m_wnd;
m_wnd=FindWindow(NULL,"MyWindow"); //MyWidnow是对话框的标题名
if (m_wnd!=NULL)
{
if (PostMessage(m_wnd,WM_ONLINE_MESSAGE,(WPARAM)CMD,(LPARAM)this)<=0)
{
AfxMessageBox("发送消息失败!");
}
}
PostMessage在发送消息时返回值是大于0的值说明发送成功了,可为什么OnMessageManager方法收不到呢?请各位朋友帮忙看看是哪里出错了?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货