现在的位置: 首页 > 综合 > 正文

VC++ 中控件的ID 与 句柄 关系

2013年01月02日 ⁄ 综合 ⁄ 共 700字 ⁄ 字号 评论关闭
其他高级语言的控件只有控件名称,没有什么ID,但也有句柄。
在C++这两个概念都是控件的标识,这两个概念可以从"内外两方面考虑", 
"外"指的是用户(程序员)识别的,在vc编辑系统中,ID就是被程序员利用的,对各种控件进行操作的标识;"内"部的ID是指句柄,即句柄是内部操作系统识别这个ID的标识。 
另外,在程序运行期,整个进程不会有ID这个东西,只会有句柄,而在编辑器内(即在程序的非运行期内),存在的是ID,而不会存在句柄,但对同一个控件而言,它们指的是同一个东西。关键是看用在什么期间。

打个比喻:你的家庭现在就好比是一个程序(窗体也是程序的一部分,实际窗体、控件都是由命令语句动态构建的,只是省了你自己写代码而已,autoit的窗体和控件好像就只能用代码构建,和vb还不一样),控件ID就好像你的名字,一般一个家庭(程序)里的众多成员(控件)之间是不会重名的,每个人在自己家(程序)里的名字(控件ID)都是唯一的,当你的家人(程序代码)需要找你,叫你名字的时候就直接称呼你的名字(控件ID)。
但是全国无数个家庭,就可能会有重名了吧,于是政府(系统)就不管你的名字(控件ID)是什么,直接分配给每个人(控件)一个身份证号码(句柄),公安局(其他程序)来找你(一个控件)的时候就使用你的身份证号(句柄)来保证在全国(内存)范围里也不会把你弄错。每个家庭组成以后(运行了一个新程序),生下了小宝宝(构建新的控件)就会得到一个全国(内存)唯一的一个身份证号(句柄),以保证在国内(内存)的唯一性。当一个家庭的成员寿终正寝(控件销毁)的时候,身份证号码(句柄)同时被作废(系统收回,以后分配给新产生的控件)

抱歉!评论已关闭.