句 柄 ( H a n d l e ) 是 什 么 ? 句柄(Handle)是什么? 句柄(Handle)是什么?
pf就是句柄
句柄是一个用来标识对象或者项目的标识符
,可以用来描述窗体、文件等,还有注意句柄(Handle)不能是常量
!
从数据类型上来看它只是一个32位(或者64位)的无符号整数
。
Window之所以要设立句柄,根本上源于内存管理机制的问题,即虚拟地址。
简而言之,数据的地址需要变动,变动以后就需要有人来记录、管理变动,因此系统用句柄来记载数据地址的变更
。在程序设计中,句柄是一种特殊的智能指针,当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。
句柄与普通地址的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个新的内存地址上
。
这种间接访问对象
的模式增强了系统对引用对象
的控制。
在20世纪80年代的操纵系统(如Mac OS和Windows)的内存管理中句柄被广泛应用,Unix系统的文件描述符基本上也属于句柄。和其他桌面环境一样,Windows API大量使用句柄来标识系统中的对象,并建立操作系统与用户空间之间的通信渠道。
例如桌面上的一个窗体由一个HWND类型的句柄来标识。
目前许多操作系统仍然把指向私有对象的指针
以及进程传递给客户端的内部数组下标
称为句柄。
句柄项目包括:
- 模块
- 任务
- 实例
- 文件
- 内存块
- 菜单
- 控件
- 字体
- 资源:图标、光标、字符串等
- GDI对象:位图、画刷、元文件、调色板、画笔、区域
- 设备描述表
句柄是Windows用来标识被应用程序所建立或使用的对象的唯一整数
,Windows使用各种各样的句柄标识应用程序实例、窗口、控件、位图、GDi对象等。
Windows句柄有点像C语言中的文件句柄。
从上面的定义我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的。从数据类型上来看它只是一个32位(或者64位)的无符号整数
。
应用程序几乎总是通过调用调用一个Windows函数来获得一个句柄,之后其他的Windows函数就可以使用该句柄,来引用相应的对象。在Windows编程中会用到大量的句柄,比如实例句柄、位图句柄、设备描述句柄、图标句柄等。