MFC自定义消息

使用过程

消息传递过程中参与的对象
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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值