将多个类似命令消息或多个控件消息映射到同一个响应函数: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 值。
这样我们就可以定义一个函数喽,方便吧!
当然。
我们可以同一个函数响应数字按键消息,用另一个函数处理所有的运算操作,需要用到消息范围映射宏,将多个命令消息或多个控件消息映射到同一个响应函数。有三组宏用于映射指定范围的消息。
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 值。
这样我们就可以定义一个函数喽,方便吧!
相关文章推荐
- 多个按键点击映射到同一个消息函数中的方法(ON_COMMAND_RANGE)
- ON_COMMAND_RANGE的使用-将多个消息映射到一个消息响应函数
- ON_COMMAND_RANGE 多控件映射一个函数
- MFC里ON_COMMAND_RANGE消息映射的ID问题
- MFC中ON_COMMAND_RANGE()消息映射
- 在WM_COMMAND中,lParam用来区分是命令消息还是控件通知消息:如果lParam为NULL,则这是个命令消息,否则lParam里面放的必然就是控件的句柄,是一个控件通知消息。对于wParam则是低位放的是控件ID,高位放的是相应的消息事件。
- 在自绘控件中创建多个CButton按钮时,如果设置按钮的消息(使用ON_COMMAND_RANGE消息)
- MFC里ON_COMMAND_RANGE消息映射的ID问题
- MFC消息映射之ON_COMMAND_RANGE()
- ON_COMMAND_RANGE 多个按钮响应一个函数
- 手动书写控件变量的添加,手动实现命令消息映射和通知消息映射
- 一个很好用的小控件----给所有view右上角添加数字(类似未读消息之类的)
- MFC消息ON_WM_CONTEXTMENU和ON_COMMAND_RANGE
- ON_COMMAND_RANGE 多个按钮响应一个函数
- 同一类消息或命令映射到同一个函数
- VC下许多相同的控件事件处理方法(ON_CONTROL_RANGE、ON_COMMAND_RANGE、ON_UPDATE_COMMAND_UI_RANGE )
- 有几个控件的操作时有关联关系,一个对话框中有多组这样的控件群,各个组中的控件的消息响应处理非常类似,以下提供解决方案
- 消息宏: ON_COMMAND_RANGE/ON_COMMAND_RANGE_UI
- 一个ON_COMMAND_RANGE( id1, id2, memberFxn ) 函数引起的困惑
- VC中ON_COMMAND_RANGE 多个按钮响应一个函数