句柄(handle)是什么?

句 柄 ( H a n d l e ) 是 什 么 ? 句柄(Handle)是什么? Handle


在这里插入图片描述

pf就是句柄


句柄是一个用来标识对象或者项目的标识符,可以用来描述窗体、文件等,还有注意句柄(Handle)不能是常量


从数据类型上来看它只是一个32位(或者64位)的无符号整数


Window之所以要设立句柄,根本上源于内存管理机制的问题,即虚拟地址。

简而言之,数据的地址需要变动,变动以后就需要有人来记录、管理变动,因此系统用句柄来记载数据地址的变更。在程序设计中,句柄是一种特殊的智能指针,当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。

句柄与普通地址的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个新的内存地址上

这种间接访问对象的模式增强了系统对引用对象的控制。

在20世纪80年代的操纵系统(如Mac OS和Windows)的内存管理中句柄被广泛应用,Unix系统的文件描述符基本上也属于句柄。和其他桌面环境一样,Windows API大量使用句柄来标识系统中的对象,并建立操作系统与用户空间之间的通信渠道。

例如桌面上的一个窗体由一个HWND类型的句柄来标识。

目前许多操作系统仍然把指向私有对象的指针以及进程传递给客户端的内部数组下标称为句柄。

句柄项目包括:

  1. 模块
  2. 任务
  3. 实例
  4. 文件
  5. 内存块
  6. 菜单
  7. 控件
  8. 字体
  9. 资源:图标、光标、字符串等
  10. GDI对象:位图、画刷、元文件、调色板、画笔、区域
  11. 设备描述表

句柄是Windows用来标识被应用程序所建立或使用的对象的唯一整数,Windows使用各种各样的句柄标识应用程序实例、窗口、控件、位图、GDi对象等。

Windows句柄有点像C语言中的文件句柄。


从上面的定义我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的。从数据类型上来看它只是一个32位(或者64位)的无符号整数

应用程序几乎总是通过调用调用一个Windows函数来获得一个句柄,之后其他的Windows函数就可以使用该句柄,来引用相应的对象。在Windows编程中会用到大量的句柄,比如实例句柄、位图句柄、设备描述句柄、图标句柄等。


  • 12
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值