各位兄弟,小弟初学API,现在有一个问题想请教一下,就是关于句柄的,我想问窗口句柄(HWND)和实例句柄(HINSTANCE)之间有什么差别,一个窗口对应一个句柄,但是实例句柄到底是启什么作用呢,窗口句柄和实例句柄是一一对应的吗?无论谁有什么见解都可以,小弟在此先谢过了.

解决方案 »

  1.   

    就是应用程序的句柄,Windows通过该句柄来访问该应用程序别的句柄同理,大都通过句柄来访问该对象的:比如HMENU,HICON,HBITMAP,HWND...........
      

  2.   

    API是接口,句柄是接口,两者有什么区别?API是一个通用的函数族,他处理所有的对象,而句柄是和某个具体对象相关联的数据结构。只有借助句柄,API才知道处理哪个对象。有些对象有ID。句柄表示特殊的对象,ID也表示某个对象,为什么要两个东西来表示?首先,句柄不能唯一表示对象。一个对象可以有多个句柄。例如:假设我们用CreateProcess创建一个进程,该进程的第一个线程的句柄会返回给调用CreateProcess的进程。同时,在新创建的进程中,该线程也会有一个句柄。这样,这个线程就有两个句柄。我们也可以用DuplicateHandle复制一个句柄,这个句柄和原来句柄是不一样的,但是他们都表示同一个对象。而每个有ID的对象,在系统范围内,ID肯定是唯一的。其次,句柄所能实现的功能ID不能实现。毕竟ID只是一个数字,他不能记录很多信息。而句柄可能在其内部结构中记录了很多信息(如权限、有无信号等)。总之,如果试图解释他到底是什么,学习句柄就会误入歧途。从虚的角度去理解,对于新手是难一点,但是这也许是唯一正确的办法。 
    这是我以前看过的文章,觉得不错,我觉得理解句柄应这么理解吧