字符串在内存中的线性地址总是大于10000H是什么意思
本帖最后由 风逝无痕 于 2016-9-17 19:10 编辑我不是不懂10000H的意思,只是不懂“线性地址总是大于10000H”这句话的意思,大家别见笑本人小学没毕业没办法才问 10000H是 十六进制表示的 我知道10000H是 十六进制表示的 ,我是问“线性地址总是大于10000H”这句话的意思 建议你把完整的话给放上来,我们只看一部分也不知道你想问啥{:10_245:} my_angel 发表于 2016-9-17 11:54
建议你把完整的话给放上来,我们只看一部分也不知道你想问啥
完整的是这样的““菜单ID MENU ”语句用来指定菜单的ID值和内存属性,菜单ID可以是16位的整数,范围是1~65 535,但菜单ID也可以用字符串表示,如下面的定义:
MainMenumenu
表示菜单的ID是字符串型的”MainMenu”,但这样定义的话,在程序中引用的时候就要用字符串指针代替16进制的菜单ID值,显得相当不便,所以在实际应用中通常使用16进制数值当做菜单ID。数值型ID的范围限制在1~65 535之间的原因是字符串在内存中的线性地址总是大于10000h,API函数检测参数时发现小于10000h时就可以把它认为是数值型的,大于10000h时就当做字符串指针处理。
风逝无痕 发表于 2016-9-17 18:39
完整的是这样的““菜单ID MENU ”语句用来指定菜单的ID值和内存属性,菜单ID可以是16位的 ...
其实这个不用把他想成很难的问题。
这个是API定义的。
给你看看原文吧。
在菜单的API文档定义中,可以使用菜单ID的参数说明如下:
Long pointer to a null-terminated string that contains the name of the menu resource. Alternatively, this parameter can consist of the resource identifier in the low-order word and zero in the high-order word. To create this value, use the MAKEINTRESOURCE macro.
意思是说,这是一个32位参数,如果传入资源ID的话,就是一个16位的数(高16位置0)。
但是,也可以传入一个32位指针,指向一个字符串。这时候为了区分ID和指针,指针项的高16位就必须大于0,整个32位数来看,就是10000h。
页:
[1]