今天在工作中遇到一个问题,一个动态菜单,每个菜单的菜单项ID是我自己定义的,定义如下:

#define IDM_SEARCHRECORD0   222240
#define IDM_SEARCHRECORD1   222241
#define IDM_SEARCHRECORD2   222242
#define IDM_SEARCHRECORD3   222243
#define IDM_SEARCHRECORD4   222244
#define IDM_SEARCHRECORD5   222245
#define IDM_SEARCHRECORD6   222246
#define IDM_SEARCHRECORD7   222247
#define IDM_SEARCHRECORD8   222248
#define IDM_SEARCHRECORD9   222249

然后定义了一个ON_COMMAND_RANGE宏来对着十个菜单项进行消息响应:

ON_COMMAND_RANGE(IDM_SEARCHRECORD0,IDM_SEARCHRECORD9,OnRecentSearchClicked)

下面是消息响应函数OnRecentSearchClicked:

void OnRecentSearchClicked(UINT nID)
{if(nID < IDM_SEARCHRECORD0 || nID > IDM_SEARCHRECORD9){return;}else{......}
}

可是奇怪的是,程序怎么都进不到else里面,控件的ID怎么都传不对。

后面上网找了很久才知道nID不能大于65535,不然会溢出,当然不对了。

引用原文描述:

“这个uID是在 id1,id2之间的,但是MFC提供的这个 id1,id2是有个范围的,最大为65535个,所以用户在创建动态菜单,BUTTON时,在资源文件中定义这些宏时请最好不要超过这些范围,如果硬是要超过65535,那麽在memberFxn(UINT uID)函数判断的时候 需要取余 uID%65535 处理。”

转载于:https://www.cnblogs.com/tangzhengyue/p/3155810.html

MFC里ON_COMMAND_RANGE消息映射的ID问题相关推荐

  1. MFC之处理消息映射的步骤...

    先看下效果截图如下: 第一步:在对话框的头文件中xx.h写入处理特定消息函数的原型 afx_msg void OnHotKey(WPARAM wParam, LPARAM lParam); 截图如下( ...

  2. MFC关键技术-消息映射机制

  3. MFC 教程【4_消息映射的实现】

    消息映射的实现 Windows消息概述 Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口.这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows. 消息的 ...

  4. MFc消息映射机制理解

    何谓消息.消息处理函数.消息映射? 消息简单的说就是指通过输入设备向程序发出指令要执行某个操作.具体的某个操作是你的一系列代码.称为消息处理函数.在SDK中消息其实非常容易理解,当窗口建立后便会有一个 ...

  5. 【转】MFC消息映射详解(整理转载)

    消息:主要指由用户操作而向应用程序发出的信息,也包括操作系统内部产生的消息.例如,单击鼠标左按钮,windows将产WM_LBUTTONDOWN消息,而释放鼠标左按钮将产生WM_LBUTTONUP消息 ...

  6. 【MFC】MFC消息映射(二)

    00. 目录 文章目录 00. 目录 01. 概述 02. 消息映射宏 2.1 BEGIN_MESSAGE_MAP 2.2 DECLARE_MESSAGE_MAP 2.3 END_MESSAGE_MA ...

  7. MFC六大核心机制之五、六:消息映射和命令传递

    作为C++程序员,我们总是希望自己程序的所有代码都是自己写出来的,如果使用了其他的一些库,也总是千方百计想弄清楚其中的类和函数的原理,否则就会感觉不踏实.所以,我们对于在进行MFC视窗程序设计时经常要 ...

  8. MFC消息映射机制概述

    消息 窗口消息一般由三个部分组成: 1)一个无符号整数,是消息值: 2)消息附带的 WPARAM 类型的参数: 3)消息附带的 LPARAM 类型的参数.其实我们一般所说的消息是狭义上的消息值,也就是 ...

  9. 【MFC】MFC消息映射

    00. 目录 文章目录 00. 目录 01. 概述 02. 消息映射宏 2.1 BEGIN_MESSAGE_MAP 2.2 DECLARE_MESSAGE_MAP 2.3 END_MESSAGE_MA ...

最新文章

  1. 【OpenCV 4开发详解】轮廓面积与长度
  2. 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】
  3. HDU - 6598 Harmonious Army (最小割)
  4. android摄像头框架,FS_S5PC100平台上Android Camera架构分析
  5. java递归遍历删除文件
  6. python 按照当前日期创建文件
  7. java webmethod_javax.xml.ws.WebServiceException:方法beaInvoke公开为WebMethod
  8. [转]C#用SHA对密码加密
  9. 完成 Orange3 数据挖掘 汉化版
  10. Delphi为什么都不用了?公司CTO不向老板推荐使用Delphi的13 个真实原因
  11. 解决Everything无法搜索移动硬盘文件问题(utool搜索不到也是因为Everything的问题)
  12. 正则函数--search/match/findall/sub/split
  13. CSR867x — 如何修改BLE的蓝牙地址
  14. Kernel Panic - not syncing: VFS:
  15. SQL Server 非对称秘钥管理
  16. monkeyrunner 使用
  17. discuzapi插件_discuz! api
  18. geoserver 官方文档翻译(其一)----- CQL and ECQL cql_filter例子
  19. 【无人机学习】Mission Planner(pc端)和QGroundControl(android端)
  20. Java语言中,finally一定会执行吗?

热门文章

  1. 安卓平板电脑_盘点:2019年国内最受关注的安卓工业平板电脑实力厂商名录!...
  2. Java学习总结:50(扫描流:Scanner)
  3. mysql 账户管理_如何用MySQL 命令来实现账户管理
  4. 数据结构学习系列文章合集
  5. React 组件生命周期
  6. [微信小程序]js动态改变数组对象列表中的样式
  7. [Python_7] Python Socket 编程
  8. 为pony程序添加IACA标记(二)
  9. 如何让phpmyadmin输入密码再进入
  10. SQLite第三方框架FMDB的使用,以及使用FMDatabaseQueue保证线程安全