句柄(Handle)是一个用来标识对象或者项目的
标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量。
句柄(handle)是C++程序设计中经常提及的一个术语。它并不是一种具体的、固定不变的数据类型或实体,而是代表了程序设计中的一个广义的概念。句柄一般是指获取另一个对象的方法——一个广义的指针,它的具体形式可能是一个整数、一个对象或就是一个真实的指针,而它的目的就是建立起与被访问对象之间的唯一的联系。
句柄是Windows系统中对象或实例的标识,这些对象包括模块、应用程序实例、窗口、控件、位图、
GDI对象、资源、文件等。
从
数据类型上来看,它只是一个16位的
无符号整数。应用程序总是通过调用
Windows API获得一个句柄,之后其他 Windows函数就可以使用该句柄,以引用和操作相应的
内核对象。句柄可以像指针那样置空,那样句柄就没有任何意义,不代表任何内核对象。
句柄在 Windows编程中是一个很重要的概念,在
Windows程序中并不是用
物理地址来标识一个内存块、文件、任务或动态装入模块的。相反地,
Windows API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。
应该明白的是,句柄是一个
标识符,是用来标识对象或者项目的。从
数据类型上来看它只是一个16位的
无符号整数。应用程序几乎总是通过调用一个Windows函数来获得一个句柄,之后其他的Windows函数就可以使用该句柄,以引用相应的对象。在 Windows编程中会用到大量的句柄。
1、我们可以在实现中用尺寸大小固定的(constant-
sized)对象来表示尺寸大小不定的(variable-sized)值。
2、我们可以在实现中用
运行时绑定(run-time bounding)而不是
编译时(compile-timebounding)绑定的方式来处理对象。
在早期的Windows应用程序中,句柄的使用是很频繁的。但随着
MFC类库发展,其对Windows内核的封装程度不断提高。这样如果用MFC类库编程的话,就很少会
有机会直接对句柄进行操作。但是如果使用 Windows API函数的话,依然需要对句柄进行
直接操作。