RT

解决方案 »

  1.   

    句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用它句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)。指针一般出现在比较近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。
      

  2.   

    句柄相当于一个HashID,指针用来代表内存地址。之所以用句柄,是因为地址对于Windows这种多任务的系统来说是没办法跨进程的。另外就是系统对象本身是受保护的,不允许直接访问。
      

  3.   

    mizuho_2006是常见的解释说法,严重支持zanfeng,这问题应移到VC版,哈哈句柄和指针不是一个层次的东西。软件系统是分层的。windows是用C/C++开发的,C/C++是底层,win32 SDK是上层。不在一个层次东西,是不具比较性的。硬去比较,只会走向岐途。可以比较指针和引用。
    可以比较句柄和hinstance。
      

  4.   

    简而言之 句柄 就是对资源的唯一标示 就相当于人的身份证 唯一标示一个资源
    比如 一个窗体的句柄 就唯一标示那个窗体
    指针 只指向一个内存地址 比如
    int b = 100;
    int * a = &b;
    那么就表示 a 指向的是b在电脑内存中的一个地址、、、
      

  5.   

    可能我的比喻不是很恰当,希望能对你理解句柄Handle与指针Pointer有一些帮助。如果说鱼钩是Pointer,那么鱼竿就是Handler,上钩的鱼就是对应的资源。鱼儿咬了钩,可能带着钩在水下四处跑,但无论钩在水下被带到多远,我们总可以通过鱼竿找到它。