ON_COMMAND_RANGE用法
时间: 2023-07-27 16:05:51 浏览: 44
ON_COMMAND_RANGE 是 MFC 中的一个宏定义,用于处理一组连续的菜单命令。它的语法如下:
```cpp
ON_COMMAND_RANGE(idFirst, idLast, memberFxn)
```
其中,idFirst 和 idLast 是一组连续的菜单命令的 ID 范围,memberFxn 是一个消息映射函数的名称。当用户选择了该范围内的菜单命令时,将自动调用 memberFxn 函数。该函数的原型如下:
```cpp
afx_msg void memberFxn(UINT nID)
```
其中,nID 是用户选择的菜单命令的 ID。
使用 ON_COMMAND_RANGE 宏可以方便地处理多个菜单命令的消息,避免编写大量的消息映射函数。举个例子,如果我们有一组菜单命令 ID 分别为 ID_FILE_NEW、ID_FILE_OPEN、ID_FILE_SAVE,我们可以这样处理它们的消息:
```cpp
BEGIN_MESSAGE_MAP(CMyWnd, CFrameWnd)
ON_COMMAND_RANGE(ID_FILE_NEW, ID_FILE_SAVE, OnFileCommand)
END_MESSAGE_MAP()
void CMyWnd::OnFileCommand(UINT nID)
{
switch (nID)
{
case ID_FILE_NEW:
// 处理新建文件命令
break;
case ID_FILE_OPEN:
// 处理打开文件命令
break;
case ID_FILE_SAVE:
// 处理保存文件命令
break;
default:
// 处理未知命令
break;
}
}
```
这里,我们将 ID_FILE_NEW、ID_FILE_OPEN、ID_FILE_SAVE 三个菜单命令的处理都交给了 OnFileCommand 函数来处理,根据传入的菜单命令 ID 来区分不同的命令并进行相应的处理。