发布时间:2024年11月06日 15:16:29分享人:傻傻男儿来源:互联网21
所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 句柄是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢? 为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。 句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象 本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。 但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。
其他回答共2条
2011-4-7 08:31doublejiang2|四级
你可以认为是一个class,也可以设为是一个指针之类的东西。很多api需要的参数,这个参数不正确,api就不能工作。其实是一个offset。 0
|评论
2011-4-7 08:40hedogn|六级
就像每一个计算机要分配一个ip地址,学校中每一个学生都一个学号一样,操作系统识别管理资源的依据就是句柄。对操作系统来说,要指定一个功能,你一般要指定该操作是针对那个窗口或资源而言的,如果一个程序的某个窗口在屏幕上出现了好几个,因为他们的代码都一样,那么识别它们的唯一依据就是句柄(句柄是操作系统分配的唯一数字编号)。
最佳答案此答案由提问者自己选择,并不代表爱问知识人的观点
揪错┆评论
wang_zhenzhu
[学者]
在WINDOWS操作系统中,每一个对象都有一个唯一的编号,这个编号就叫句柄,这就好像每个人都有一个名字一样,用以被别人称呼或识别。句柄是给编程的人用的,以便程序员在程序中使用、称呼这个对象。
回答:2006-03-18 13:13
提问者对答案的评价:
其它回答共1条回答
![编程中句柄的意思是什么 句柄无效是什么意思](http://img.413yy.cn/images/31101031/31030837t016a38c8e989722e90.jpg)
评论
dsqian01
[学妹]
句柄在WIN32下就是一个32位整数。它是WINDOWS用来记录,控制所分配资源的一个控制点。它的英文HANDLE(把手,把柄),可能更能使人明白。比如生成一个窗口,会返回一个窗口句柄。从资源中读入一幅位图,会返回一个位图句柄。获得了句柄,我们可以用它做许多事。比如用GETOBJECT可以返回WINDOWS中所有有关图形GDI资源的信息。在GETOBJECT中传入位图句柄及位图结构变量,可返加位图的有关信息。有窗口句柄,就可以控制这个窗口的类型,大小等多个方面。API就是应用程序编程接口。可以理解为就是系统为我们提供的函数。只要WINDOWS存在,我们就可以对它提供的函数进行调用。
参考文献:CSDN社区
回答:2006-03-18 12:53
爱华网本文地址 » http://www.413yy.cn/a/25101012/133646.html
更多阅读
![](http://img.aihuau.com/images/30101030/30042033t0147c5ab9d7f673d13.jpg)
怎么样在word文档中调整文字的大小——简介在word文档中设置字体的大小是再普通、再简单不过的事了,我们常常根据不同要求来设置它们,文字的大小可以随意调整,可以调大也可以调小,具体方法如下:怎么样在word文档中调整文字的大小——方
![](http://img.aihuau.com/images/30101030/30083824t01b0240c99269ba6f7.jpg)
UC高达看到现在,终于遇到了一部触动我内心深处的作品——Z高达。就像片尾的解说词那样,它充满了时代的眼泪——乱世的眼泪。只要人类之间存在利益纷争,战争就永远不会停止,悲剧也会不断地重演。哪怕人们离开地球,飞翔于广阔的宇宙,也无法
![](http://img.aihuau.com/images/31101031/31042723t019d62af1be207554a.jpg)
出身外文捍卫华文由于忧心台湾学生的华文能力每下愈况,余光中两年前连同张晓风等人在台湾临时发起组织“抢救国文教育联盟行动”,过后正式成立民间组织“中华语文教育促进协会”。去年余光中以协会理事长的名誉向社会发声说,“中文是中
![](http://img.aihuau.com/images/31101031/31065740t01fe1679b2147d04c3.jpg)
每周获利5%在股市中,我们的赢利是如何一次次计算的呢?是用下面的公式:X=y(1+Z)的N次方X:是本金与利润的总和Y:本金Z:利润率N:次或天数这个数公式是就是所谓的复利。该公式在数学上称为:复利公式神奇在哪呢?请看下面:72您可知1.1=????≈1000这就是
![](http://img.aihuau.com/images/31101031/31102525t01f2a7df7405c4bffd.jpg)
怎么用IF函数?[日期:2012-09-04]来源: 作者:兰色幻想[字体:大 中 小]如果说在excel中最常用的函数是哪个?大部分同学都会脱口而出:IF函数。IF函数在我们工作中应用非常多,因为我们要不停的进行各种各样的判断,比如是不是达标了,是男还是女,是在