请问C++ SDK一个问题
来源:百度知道 编辑:UC知道 时间:2024/09/21 22:56:21
这两个实例化 有什么区别?
哪些场合 用HINSTANCE
哪些场合 用HANDLE
哪些场合 都可以用?
请各位详细回答 小菜再次谢过了
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创建的一个全局索引表里的索引。