MFC里ON_COMMAND_RANGE消息映射的ID问题
今天在工作中遇到一个问题,一个动态菜单,每个菜单的菜单项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问题相关推荐
- MFC之处理消息映射的步骤...
先看下效果截图如下: 第一步:在对话框的头文件中xx.h写入处理特定消息函数的原型 afx_msg void OnHotKey(WPARAM wParam, LPARAM lParam); 截图如下( ...
- MFC关键技术-消息映射机制
- MFC 教程【4_消息映射的实现】
消息映射的实现 Windows消息概述 Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口.这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows. 消息的 ...
- MFc消息映射机制理解
何谓消息.消息处理函数.消息映射? 消息简单的说就是指通过输入设备向程序发出指令要执行某个操作.具体的某个操作是你的一系列代码.称为消息处理函数.在SDK中消息其实非常容易理解,当窗口建立后便会有一个 ...
- 【转】MFC消息映射详解(整理转载)
消息:主要指由用户操作而向应用程序发出的信息,也包括操作系统内部产生的消息.例如,单击鼠标左按钮,windows将产WM_LBUTTONDOWN消息,而释放鼠标左按钮将产生WM_LBUTTONUP消息 ...
- 【MFC】MFC消息映射(二)
00. 目录 文章目录 00. 目录 01. 概述 02. 消息映射宏 2.1 BEGIN_MESSAGE_MAP 2.2 DECLARE_MESSAGE_MAP 2.3 END_MESSAGE_MA ...
- MFC六大核心机制之五、六:消息映射和命令传递
作为C++程序员,我们总是希望自己程序的所有代码都是自己写出来的,如果使用了其他的一些库,也总是千方百计想弄清楚其中的类和函数的原理,否则就会感觉不踏实.所以,我们对于在进行MFC视窗程序设计时经常要 ...
- MFC消息映射机制概述
消息 窗口消息一般由三个部分组成: 1)一个无符号整数,是消息值: 2)消息附带的 WPARAM 类型的参数: 3)消息附带的 LPARAM 类型的参数.其实我们一般所说的消息是狭义上的消息值,也就是 ...
- 【MFC】MFC消息映射
00. 目录 文章目录 00. 目录 01. 概述 02. 消息映射宏 2.1 BEGIN_MESSAGE_MAP 2.2 DECLARE_MESSAGE_MAP 2.3 END_MESSAGE_MA ...
最新文章
- 【OpenCV 4开发详解】轮廓面积与长度
- 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】
- HDU - 6598 Harmonious Army (最小割)
- android摄像头框架,FS_S5PC100平台上Android Camera架构分析
- java递归遍历删除文件
- python 按照当前日期创建文件
- java webmethod_javax.xml.ws.WebServiceException:方法beaInvoke公开为WebMethod
- [转]C#用SHA对密码加密
- 完成 Orange3 数据挖掘 汉化版
- Delphi为什么都不用了?公司CTO不向老板推荐使用Delphi的13 个真实原因
- 解决Everything无法搜索移动硬盘文件问题(utool搜索不到也是因为Everything的问题)
- 正则函数--search/match/findall/sub/split
- CSR867x — 如何修改BLE的蓝牙地址
- Kernel Panic - not syncing: VFS:
- SQL Server 非对称秘钥管理
- monkeyrunner 使用
- discuzapi插件_discuz! api
- geoserver 官方文档翻译(其一)----- CQL and ECQL cql_filter例子
- 【无人机学习】Mission Planner(pc端)和QGroundControl(android端)
- Java语言中,finally一定会执行吗?
热门文章
- 安卓平板电脑_盘点:2019年国内最受关注的安卓工业平板电脑实力厂商名录!...
- Java学习总结:50(扫描流:Scanner)
- mysql 账户管理_如何用MySQL 命令来实现账户管理
- 数据结构学习系列文章合集
- React 组件生命周期
- [微信小程序]js动态改变数组对象列表中的样式
- [Python_7] Python Socket 编程
- 为pony程序添加IACA标记(二)
- 如何让phpmyadmin输入密码再进入
- SQLite第三方框架FMDB的使用,以及使用FMDatabaseQueue保证线程安全