您的位置:首页 > 其它

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

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

当然。

我们可以同一个函数响应数字按键消息,用另一个函数处理所有的运算操作,需要用到消息范围映射宏,将多个命令消息或多个控件消息映射到同一个响应函数。有三组宏用于映射指定范围的消息。
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 值。

这样我们就可以定义一个函数喽,方便吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐