句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?
 为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。
句柄地址(稳定)→记载着对象在内存中的地址────→对象在内存中的地址(不稳定)→实际对象    但是,必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。
    在VB中获得一个对象的句柄十分简单,如要获取Form1窗体的句柄,就可以这引自资料

解决方案 »

  1.   

    能否解释 hwnd 和 hdc;
      

  2.   

    句柄,就是一个指针,指向他所指的对象(菜单,窗口,线程)
    再Delphi里可以理解为整数
      

  3.   

    什么是句柄 hwnd
    什么是设备描述表句柄 hdc
    win32 API常用到这两个慨念。
    我主要是对这两个慨念不清楚。
      

  4.   

    窗口句柄,指向窗口,你要他可以修改或得到窗口的属性,可以用SetWindowLong(...)设备句柄,就是画布的Handle,你用它可以在窗口上画画。窗口窗口句柄可以获得它的设备句柄,用GetWindowDC,反之也可
      

  5.   

    窗口句柄,指向窗口,你要他可以修改或得到窗口的属性,可以用SetWindowLong(...)设备句柄,就是画布的Handle,你用它可以在窗口上画画。窗口窗口句柄可以获得它的设备句柄,用GetWindowDC,反之也可
      

  6.   

    首先,你应该弄清楚剧柄的概念。句柄是windows用来标识被应用程序建立或使用对象的唯一整数。windows要使用各种各样的句柄来标识诸如应用程序实例、窗口、菜单、控制、分配的内存空间等对象。应用程序几乎总是通过调用一个windows函数来获得一个句柄,其他的windows函数可以使用该句柄,以引用相应的对象。句柄的实际值对应用程序并不重要,但向应用程序提供句柄的windows模块知道如何使用该句柄区引用相应的对象。
    设备描述表是一种数据结构,用来存储与设备有关的信息。设备描述表句柄是某一windows函数调用这一结构,换回的用来标识这一结构的整数。
      

  7.   

    再补充一点,应该说hwnd是比hdc更广的概念。
      

  8.   

    可不可以理解为dext(德克斯特)所说的?