博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC里ON_COMMAND_RANGE消息映射的ID问题
阅读量:5741 次
发布时间:2019-06-18

本文共 986 字,大约阅读时间需要 3 分钟。

今天在工作中遇到一个问题,一个动态菜单,每个菜单的菜单项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

你可能感兴趣的文章
»Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了)
查看>>
有感于DELL官网的修正速度和服务态度
查看>>
金三银四铜五铁六,面试得做好这个准备
查看>>
算法之【插入排序法】
查看>>
为UILabel 添加圆角背景(转)
查看>>
Android修改和添加APN网络
查看>>
Android App监听软键盘按键的三种方式
查看>>
优化导入数据到MariaDB、Mysql(InnoDB)的速度
查看>>
脸皮!哈,要它做什么!
查看>>
每天40分钟家务
查看>>
Linux基础 -- 帮助命令
查看>>
VirtualBox虚拟机网络配置
查看>>
ubuntu各文件夹简介
查看>>
angular 常见数据绑定的三种方式
查看>>
在div文本区域,光标位置处插入
查看>>
百度富文本ueditor 的简单使用
查看>>
人生唯一一次!一定要看! -无图版
查看>>
保证分布式系统数据一致性的6种方案(转载)
查看>>
java中的高级同步对象
查看>>
MySQL的InsertOrUpdate语法
查看>>