句柄,在Windows中,就是一个窗口的唯一标识,实际上是一个整数值(UINT型);
举例:MFC中,一个对话框包含许多个控件.对话框和控件本质都是窗口(基类都为CWnd).你要对某个控件进行操作,比如在Edit中输出文字时,就要定位它,即定位这个窗口.这时,靠的就是这个窗口的句柄.

解决方案 »

  1.   

    柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。
    有些是整个系统唯一(如窗口句柄),有些是当前进程或线程中唯一
    (如线程句柄,全局的有另一个标识符)。详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。
    常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),
    文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),
    区域句柄(HRGN)等等。在申请句柄时是要占用资源的,分三类SYSTEM、USER、GDI。
    而WINDOWS的资源是固定的,并不随内存的扩大而扩大,所以使用完以后一定要释
    放。
    >
    如果只用VB本身的代码一般是不会用到句柄的,但要是使用API函数的话,
    大多数会使用。
      

  2.   

    所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢? 为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。 
      

  3.   

    1。所有认为Handle有特定长的都是错的。(说是int还勉强,说是long就一定错了)
    更具系统的不同长的是不同的。
    2。Handle就是一个窗口的唯一标识,没有搞清楚特例和本质。窗口的Handle只是handle用法的一个例子。handle就是指针,是一个寄存器相同长度的空间,多数情况用来记录一个内存空间,可能是一级,也可能是二级(最早意义的handle). handle的使用实际是一种封装的方法,多数是不希望你知道里面的实际内容,只需要你知道如何使用即可。这样的使用方法一般都会提供一个创建函数,一个释放函数,和一批使用的函数。
    可以去看看以下东西去体会:
    windows handle; CreateWindow(), DestroyWindow()...
    file handle: CreateFile(), CloseHandle()...
    file Find handle: FindFirstFile(), FindClose()...