HINSTANCE 这个其实是 handle instance 即 实例句柄
而HANDLE这个 意思是句柄, 你可以理解为它是所有的句柄的总称
因为句柄包括很多种啊 像 窗口句柄(HWND) ,实例句柄(HINSTANCE)
光标句柄(HCURSOR) 图标句柄(HICON)
可以看到 以H 开头的都是句柄类型的, 后边的英文可以体现具体它是哪一种句柄
具体什么时候用哪一个, 这个要看函数是如何规定的了
比如一个芦世API函数, 它返回值是 句柄类型的, 那它可能是HWND 也可能是HINSTANCE 还可能是HCURSOR 这些在MSDN中API函数的介绍中都有握哗碧段举明确的说明,你自己跟本不必再意到底该用哪个, 按照函数规定的去写 就可以啦
HANDLE
Handle to an object.
This type is declared in WinNT.h as follows:
typedef PVOID HANDLE;
HINSTANCE
Handle to an instance.
This type is declared in WinDef.h as follows:
typedef HANDLE HINSTANCE;
2者本质上是一姿慧样的,区别在于object和instance
我只能帮忙提供这码册手些信息,希迟嫌望有帮助
本质上,所有句柄都是HANDLE的毕团typedef,而HANDLE又是void*。
微软在抽象层面上搞出了这么多不同的HANDLE。
赤裸裸的HANDLE是执行体对象(也有叫内核对象)的句柄。它的值是执行体对象的一个索引,每个进程有自己的执行体对象索引表
HINSTANCE及HMODULE都是一个模块(exe或陆数简dll或早裤其它)的句柄。它的值就是模块的基地址。
HWND是一个窗口用户对象的句柄。它的值也是一个索引,不过是在win32k.sys创建的一个全局索引表里的索引。
其它用户对象句柄与HWND的规则类似
二楼说的蛮好的