VC++中ID是如何分配的,如果自己定义一个ID号,系统还会不会再分配与此相同的ID
2014-12-10 09:39
495 查看
存在分配相同ID的可能。详情见下: ID的分配是通过头文件控制的。 你看你的resource.h的最后几行(注释是我加的,源文件里没有): #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 2000 // 下一个资源的ID,比如字符串资源,位图资源等 #define _APS_NEXT_COMMAND_VALUE 40001 // 下一个command的ID,这个一般是作为WM_COMMAND消息的参数用的。 #define _APS_NEXT_CONTROL_VALUE 1001 // 下一个控件的ID #define _APS_NEXT_SYMED_VALUE 101 // 下一个符号的ID #endif 比如,如果这个时候你用VC的对话框插入一个字符串,那么这个字符串的ID就会自动被分配成2000,同时_APS_NEXT_RESOURCE_VALUE会被改成2001。其他几个值也是以类似方式工作的。 所以其实VC自动分配的ID号,跟你自己定义的是有可能重复的。你必须自己保证没有重复,而不是依赖于VC帮你检查。一个办法是,比如你要新加一个控件,你可以用_APS_NEXT_CONTROL_VALUE的值作为这个控件的ID,然后自己手动把_APS_NEXT_CONTROL_VALUE的值加1,这样就能保持跟VC的ID分配机制一致。
相关文章推荐
- java 构造函数(本例意在说明如果一个类里定义了构造函数,则系统不会再给定义默认的无参构造函数)
- 如果系统能够保证不在0x000000007fffffff以上的地址分配内存,那么应用程序就能够正常运行。把一个高33位都为0的64位地址截断为32位地址,无论如何都不会产生问题。系统可以提供这一保证,
- 安卓app中嵌入一个H5页面,当手机系统设置字体变大时,如何使H5页面的字体不会随用户自己调整的系统字体变化而变化?
- 如果一个类定义了一个或多个构造方法,那么java不会提供默认的构造方法
- 技巧(5)- 如何让这个程序在系统里同时只运行一个(如果这个exe程序已经运行了,就不再运行)
- 如何将自己的实体类封装到一个list中,定义自己一系列的方法
- 3.定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打
- java中自己定义一个类,类中必须有一个自己定义的构造方法,否则编译系统识别不了
- Sql : 如何判断一个表中,是否存在一个ID,如果存在不处理,如果不存在
- 如何定义一个自己的可复用的JS文件
- 那时的ID:ZTE南研BBS上,大家简单地在自己的id前缀上一个//,不用注册,也不会有人盗用,黄金时代!
- 如何在自己的信息管理系统里集成第三方权限控制组件 - 开发一个好用稳定的开放组件
- 定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打印G
- 如果已经在一个类中定义了全局函数,在其它类文件中如何调用它?
- Sql : 如何判断一个表中,是否存在一个ID,如果存在不处理,如果不存在
- 如何用busybox制作一个自己文件系统
- 如果有一个表:AdminUser,ID(主键)、Name和PW,如何约束Name是唯一的?
- VC中如何定义一个让所有源程序都能用的全局变量(对象)
- 在C#中如何定义一个变长的结构数组?如果定义好了,如何获得当前数组的长度?
- Android中通过反射获取资源Id(特别用在自己定义一个工具将其打成.jar包时,特别注意资源的获取)