MFC消息响应之ON_NOTIFY_RANGE

1、问题分析:
对于动态创建出来的多个微调框和编辑框的滚轮响应。一般情况下,对于单个的编辑框和微调框的滚动响应会容易些,但是对于new出来的多组编辑框和微调框的处理就需要自己来处理消息映射了。这里选用ON_NOTIFY_RANGE,我把它看做MFC消息映射封装的映射宏。顾名思义,它可以处理多个微调框的消息响应。

2、处理过程:
2.1 我们来看单个的微调框在映射表里面的形式:

ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, &CMyTestDemoDlg::OnDeltaposSpin1)

2.2 我们仿照ON_NOTIFY来完成自己的ON_NOTIFY_RANGE。
F12来看看这个宏。

#define ON_NOTIFY_RANGE(wNotifyCode, id, idLast, memberFxn) \
	{ WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSigNotify_RANGE, \
		(AFX_PMSG) \
		(static_cast< void (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*) > \
		(memberFxn)) },

来看参数表:①wNotifyCode//消息码②id//控件起始ID,③idLast//控件结尾ID,④memberFxn//响应函数
这样子,有木有很清晰的赶脚。
2.3 完成自己的消息映射
①、声明消息映射

afx_msg void OnChangeSpinCtrl(UINT id, NMHDR * pNotifyStruct, LRESULT * result);

②、实现消息响应函数

void CMyTestDemoDlg::OnChangeSpinCtrl(UINT id, NMHDR * pNotifyStruct, LRESULT * result)
{}

③、将消息映射到消息处理函数

ON_NOTIFY_RANGE(UDN_DELTAPOS, 201 + 0, 201 + 100, &CMyTestDemoDlg::OnChangeSpinCtrl)

3、现在我们可以通过id来处理对应微调框的响应了。看看效果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值