将多个类似命令消息或多个控件消息映射到同一个响应函数:ON_COMMAND_RANGE

我们在日常操作中往往会遇到好多种类似的命令消息处理,比如在运算器中的数字键,每次点击都是为了得到该数字,如果为每个数字键都添加消息命令函数,想想我们的程序会变的怎么样?冗长,累赘。但是有没有一种方法只需要定义一个消息映射函数就可以得到所有数字键的数值呢?

当然。

我们可以同一个函数响应数字按键消息,用另一个函数处理所有的运算操作,需要用到消息范围映射宏,将多个命令消息或多个控件消息映射到同一个响应函数。有三组宏用于映射指定范围的消息。
ON_COMMAND_RANGE // 响应指定范围内的命令消息
ON_UPDATE_COMMAND_UI_RANGE // 响应指定范围内的命令更新消息
ON_CONTROL _RANGE // 响应指定范围内的控件消息

对于本例,可以使用 ON_COMMAND_RANGE ,在对话框的消息映射表中添加如下的消息映射宏:
ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey)
ON_COMMAND_RANGE(IDC_NUMBER11,IDC_NUMBER0,OnOperationKey)

其中第一、二个参数必须是命令 ID 或控件 ID ,其 ID 值应该是连续的。
在对话框的头文件添加如下代码:
afx_msg void OnNumberKey(UINT nID); // 此函数用于处理数字键单击事件 nID为当前点击按键的ID
afx_msg void OnOperationKey(UINT nID); // 此函数用于处理操作键单击事件
其中 nID 为消息 ID 或控件 ID ,表示按下的控件 ID 值。 

这样我们就可以定义一个函数喽,方便吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值