在MFC编程中,经常碰到“句柄”一词。请通俗易懂的解释一下。
谢谢啦!

解决方案 »

  1.   

    如果楼主想深入了解,Andrew Koening ,Barbala Moo的《C++沉思录》对句柄有详细的概念讲解。
      

  2.   

    英文是handle,就是 把柄,权柄,手柄,反正就是能够控制对象的一个东西。
      

  3.   

    句柄其实就是WINDOWS系统内部分配的用于标志资源的唯一ID,微软基于向其他客户隐藏其函数实现方法,他只提供句柄
    来让用户使用,使用句柄就可以访问该资源的一些相关函数,另外,句柄并不是指针,它只是32值,所以对于一般使用者
    来说,你是得不到其他信息,除非使用特殊的手法才可以挖掘内部数据结构,具体挖掘方法可以参考《WINDOWS图形编程〉
    ,这本书讲了好多系统内部隐藏的一些细节,对于了解WINDOWS API具有极大的帮助。
      

  4.   


    够形象,不过"句柄"这个翻译确实不怎么样,还是英文handle好理解 
      

  5.   

    Quoted From <<Programming Windows>>
    Handle (P50)
    Handles are used quite frequently in Windows.
    A handle is simply a number (usually 32 bits in size) that refers to an object. The handles in Windows are similar to file handles used in conventional C or MS-DOS programming. A program almost always obtains a handle by calling a Windows function. The program uses the handle in other Windows functions to refer to the object. The actual value of the handle is unimportant to your program, but the Windows module that gives your program the handle knows how to use it to reference the object.

    句柄:
        句柄在Windows中经常被使用。
        句柄实际上就是一个用来引用一个对象的数字(大小通常是32位)。Windows中的句柄与传统的C或是MS—DOS环境下编程时的文件句柄相似。一个程序几乎总是通过呼叫Windows的函数来获得句柄。程序通过利用其他Windows函数中的句柄来引用对象。对于你的程序来说,句柄本身的值并不重要,但是Windows的模块是通过给定一个程序相应的句柄并且利用它来应用相应的对象。
        
      

  6.   

    In programming, a handle is a token, typically a pointer, that enables the program to access a resource, such as a library function.在编程领域内,句柄就是一个“记号”,一种特殊的类似指针的东西,程序员用它可以让自己的程序获取一个资源(比如窗口,设备等),例如一个库的某个功能函数。摘自http://www.webopedia.com/    句柄这个东西貌似指针,但实际并不是指针。由于windows操作系统的结构和工作原理,它的资源和设备的地址都是windows核心态的,这就意味着作为工作在用户态的用户程序是无法访问资源或设备的实际地址(也就是指针地址)的。所以windows机制引入了句柄,句柄是一个32位的符号,程序向操作系统提交这个符号后,操作系统通过自己的翻译程序,把句柄对应的资源的真正地址再返回给程序,让程序能够访问资源所提供的功能和服务。
        DOS时代的内存管理是完全可见的,程序可以直接访问操作系统任何部分的任何资源,显示器缓存,中断向量表.......,但是windows上下两层的内存管理机制让程序必须要多经过一道手续才能访问。
      

  7.   

    windows 中的内核对象都被封装到一个“箱子”中,
    要操作这些“箱子”,你就需要钥匙,即句柄。要获得钥匙,比如操作某个进程“箱子”的钥匙——句柄,
    那么使用“打开进程”的函数来获得钥匙——这个函数返回一个句柄。