窗口句柄(窗口句柄是什么意思)
一、什么是窗口句柄
句柄就是个数字,一般和当前系统下的整数的位数一样,比如32bit系统下就是4个字节。
这个数字是一个对象的唯一标示,和对象一一对应。
这个对象可以是一个块内存,一个资源,或者一个服务的context(如 socket,thread)等等。
这个数字的来源可以有很多中,只要能保证和它代表的对象保持唯一对应就可以,比如可以用内存地址,也可以用句柄表的序号,或者干脆用一个自增ID,再或者用以上的值去异或一个常数。
扩展资料:
windows之所以要设立句柄,根本上源于内存管理机制的问题—虚拟地址,简而言之数据的地址需要变动,变动以后就需要有人来记录管理变动,(就好像户籍管理一样),因此系统用句柄来记载数据地址的变更。
传统上操作系统内核和系统服务API都是 C语言接口的,但是其内部设计理念上又是OO的,所以有对象概念却没有对应的语言语法支持。
句柄的作用就是在 C语言环境下代替 C++的对象指针来用的,创建句柄就是构造,销毁句柄就是析构,用句柄调用函数相当于传入this指针。
如果有系统API是 C++接口的,那么就没有句柄了,而是某个接口指针,IXXXPtr之类的,比如Windows的com ptr。
参考资料来源:百度百科-句柄
二、句柄是什么意思
句柄(handle),有两种解释
1,句柄是一种特殊的智能指针。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。
2,整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。
扩展资料:
注意事项:
1,内核对象句柄,是用来标识某个内核对象的一个ID同一个对象的该id对于每个进程是不同的,具体如何实现是ms不公开的算法,以下是一个近似的,可能的算法。
2,进程创建时,windows系统为进程构造了一个句柄表。
3,当该进程希望获得一个内核对象句柄或者创建一个内核对象从而获得该对象句柄时。
4,系统会将在句柄表中增加一个表项,表项的内容中存储了指向目标内核对象的指针。
同时,系统返回这个表项在句柄表中的索引作为句柄。
参考资料:百度百科——句柄
三、窗口的句柄是什么意思
Windows通过句柄来分配并控制窗口(不只是窗口,其它很多资源都如此).它实际就是一个整数.比如你在程序中向Windows申请打开一个窗口,如果成功, Windows就会告诉你成功了,并给你刚申请到的窗口的句柄,以后你就可以用它进行窗口的一些操作了.可是在Delphi中通常不用管它.当然它十分重要,但一般Delphi会自行处理.如果你想涉及一些较底层的编程就要和它打交道了.