MFC自定义消息

来源:互联网 发布:淘宝店铺实战宝典pdf 编辑:程序博客网 时间:2024/06/05 12:00

使用过程

消息传递过程中参与的对象
1. 消息响应窗体A
2. 消息发送窗体B
消息传递过程:
1. 自定义消息ID,用户自定义消息通常定义在WM_USER(0x0400)至0x7FFF范围内。

#define WM_TASK_UPDATE WM_USER + 123

2. 在窗体A中声明定义消息响应函数,该函数的类型必须是固定的:afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM)

afx_msg LRESULT OnTaskUpdate(WPARAM wParam,LPARAM lParam);//声明LRESULT CPropertiesWnd::OnTaskUpdate(WPARAM wParam,LPARAM lParam)//定义{    TaskInfo* info = (TaskInfo*)wParam;//消息携带的数据对象    SetTaskInfo(info);    return S_OK;}

3. 在窗体A中声明一个自定义消息映射宏:ON_MESSAGE(message, memberFxn ) ,其中message是消息的ID,memberFxn是映射message的消息响应函数。

ON_MESSAGE(WM_TASK_UPDATE,&CPropertiesWnd::OnTaskUpdate)

4. 在窗体B中声明一个窗口句柄对象并定义一个设置窗口句柄对象的函数。用来获取本窗体的窗口句柄。

HWND              m_hPropWnd;         //声明窗口句柄对象void CFileView::setPropHwnd(HWND hWnd)//定义设置窗口句柄对象函数{    m_hPropWnd = hWnd;}

5. 在主窗体的OnCreate函数中获取B窗体的窗口句柄

m_wndFileView.setPropHwnd(m_wndProperties.GetSafeHwnd());

6. 窗体B中发送消息

::SendMessage(m_hPropWnd,WM_TASK_UPDATE,(WPARAM)task,0);
原创粉丝点击