090928(星期一):MFC消息路由,观察 控件消息的 处理

本文介绍了如何在MFC框架中处理控件消息,特别是按钮点击事件(BN_CLICKED)。通过添加BEGIN_MESSAGE_MAP和ON_BN_CLICKED宏,定义了CMyFrameWnd类的OnButtonSearch函数来响应IDC_BUTTON_SEARCH按钮的点击。在消息映射中,详细解释了ON_BN_CLICKED的宏定义,并展示了如何定义和调用响应函数。在主函数中,通过AfxWndProc观察消息路由路径,但实际细化处理将在后续工作中继续探讨。

借助Frame8 的框架,添加

BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
ON_COMMAND(CMyFrameWndid, 0)
ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnButtonSearch)
END_MESSAGE_MAP()

 

在消息映射链表结构中添加新消息ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnButtonSearch)

下面是ON_BN_CLICKED相关的宏定义:

#define ON_NOTIFY(wNotifyCode, id, memberFxn)  

{

WM_NOTIFY,

(WORD)(int)wNotifyCode,

(WORD)id,

(WORD)id,

AfxSig_vNMHDRpl,  

(AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn

},

 

#define ON_BN_CLICKED(id, memberFxn)  

ON_CONTROL(BN_CLICKED, id, memberFxn)

 

#define ON_CONTROL(wNotifyCode, id, memberFxn)  

{

WM_COMMAND,

(WORD)wNotifyCode,

(WORD)id,

 (WORD)id,

 AfxSig_vv,  

(AFX_PMSG)&memberFxn

},

添加一个函数定义:

void CMyFrameWnd::OnButtonSearch()
{
    cout << "CMyFrameWnd::OnButtonSearch/n";
}

 

主函数中观察打印:

 cout << endl << "pMyFrame received a BN_CLICKED, routing path :" << endl;
 AfxWndProc(0, BN_CLICKED, 0, 0, pMyFrame); // 这个必须细化,明天继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值