Windows API中的HANDLE和HWND之间的区别? [英] Difference between HANDLE and HWND in Windows API?
问题描述
我正在尝试使用功能SetForegroundWindow(HWND hWnD)
.我有一些句柄,但不能作为上述函数的参数使用.我的句柄是一个线程,我想在前台运行它.
HWND和HANDLE有什么区别?
它们只是抽象数据类型.>
根据 MSDN ,HANDLE
和HWND
定义为:
-
HANDLE
是对象的句柄. -
HWND
是窗口的句柄.
因此,HWND
是HANDLE
,但并非所有HANDLE
都是HWND
.实际上:
typedef void *PVOID;
typedef PVOID HANDLE;
typedef HANDLE HWND;
示例
除非您知道自己在做什么,否则应该只将HWND
传递给SetForegroundWindow
.
HWND hWnd = FindWindow(NULL, "Calculator");
SetForegroundWindow(hWnd);
这首先使用FindWindow
获取到名为计算器"的窗口的句柄,然后将该窗口置于前景.
I'm trying to use function SetForegroundWindow(HWND hWnD)
. I have some handles but it's not working as parameter of above function. My handle is a thread and I want to run it in foreground.
What are the differences between a HWND and a HANDLE?
They are just abstract data types.
According to MSDN, HANDLE
and HWND
are defined as:
HANDLE
is a handle to an object.HWND
is a handle to a window.
So, a HWND
is a HANDLE
, but not all HANDLE
s are HWND
. In fact:
typedef void *PVOID;
typedef PVOID HANDLE;
typedef HANDLE HWND;
Example
You should only pass HWND
to SetForegroundWindow
unless you know what you are doing.
HWND hWnd = FindWindow(NULL, "Calculator");
SetForegroundWindow(hWnd);
This first gets the handle to a window titled "Calculator" with FindWindow
and then brings that window to foreground.
这篇关于Windows API中的HANDLE和HWND之间的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!