首页 > 技术文章 > MFC:ID命名和数字约定

personnel 2015-06-18 05:30 原文

今天早上双击一个刚刚编译完成的应用程序,界面刚刚显示,又自动触发了一个菜单事件,打开了一个网页。真的很意外。关闭窗口,再次双击,又自动打开了一个网页,再关闭,再双击,又不自动打开网页了。这是什么情况?

 

到百度搜索“mfc 菜单 id 范围”,找到一篇来自CSDN的帖子:

http://topic.csdn.net/t/20030708/14/2003847.html

 

看到最后一位回复者(sxslyy)的内容:

见MFC   windows   程序设计   第199页   ID要为16的倍数,因为windows保留系统菜单ID的低四位自己用,所以使用其中的任何一位,您都可能得到意外的结果. 

 

我才明白,原来菜单的ID不能随便设置值,不然会遇到意想不到的结果。

 

接着又找到一篇来自微软的文章:
ID命名和数字约定

http://technet.microsoft.com/zh-cn/library/t2zechd4(v=vs.110).aspx

 

才明白,菜单(Menu)ID,图标资源(ICON)ID,控件ID都有自各不同的取值范置。

 

关于自定义消息值的范围

 

在代码中实现了一个自定义的消息 SendMessage() ,今天无意发现原来自定义的消息uMsg的值需要大于WM_USER,比如 WM_USER+1,就行了,再看我原来设置的值:12345,还好没什么问题。

 

WM_USER (值:1024)

为了防止用户定义的消息ID与系统的消息ID冲突,MS(Microsoft)定义了一个宏WM_USER,小于WM_USER的ID被系统使用,大于WM_USER的ID被用户使用。
 
2012-09-22

推荐阅读