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