getGUIThreadInfo 函数 (winuser.h)
检索有关活动窗口或指定 GUI 线程的信息。
语法
BOOL GetGUIThreadInfo(
[in] DWORD idThread,
[in, out] PGUITHREADINFO pgui
);
参数
[in] idThread
类型:DWORD
要检索其信息的线程的标识符。 若要检索此值,请使用 GetWindowThreadProcessId 函数。 如果此参数为 NULL,则该函数返回前台线程的信息。
[in, out] pgui
类型: LPGUITHREADINFO
指向 GUITHREADINFO 结构的指针,该结构接收描述线程的信息。 请注意,在调用此函数之前,必须将 cbSize 成员设置为 sizeof(GUITHREADINFO)
。
返回值
类型: BOOL
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
即使活动窗口不是由调用进程拥有,此函数也会成功。 如果指定的线程不存在或具有输入队列,则函数将失败。
此函数可用于检索有关线程的上下文外信息。 检索到的信息与应用程序检索有关自身的信息相同。
对于编辑控件,返回的 rcCaret 矩形包含插入符号以及有关文本方向和填充的信息。 因此,它可能不会提供光标的正确位置。 Sans Serif 字体对光标使用四个字符:
光标字符 | Unicode 码位 |
---|---|
CURSOR_LTR | 0xf00c |
CURSOR_RTL | 0xf00d |
CURSOR_THAI | 0xf00e |
CURSOR_USA | 0xfff (这是一个标记值,没有关联的字形) |
若要获取 rcCaret 矩形中的实际插入点,请执行以下步骤。
- 调用 GetKeyboardLayout 以检索当前输入语言。
- 根据当前输入语言确定游标使用的字符。
- 使用 Sans Serif 调用 CreateFont 作为字体、 rcCaret 提供的高度和宽度
zero
。 对于 fnWeight,请调用SystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0)
。 如果 pvParam 大于 1,请将 fnWeight 设置为 700,否则将 fnWeight 设置为 400。 - 选择设备上下文中的字体 (DC) ,并使用 GetCharABCWidths 获取
B
相应光标字符的宽度。 - 将
B
宽度添加到 rcCaret。左 以获取实际插入点。
调用 以检索前台线程的信息(例如,当窗口失去激活时),函数可能不会返回 GUITHREADINFO 结构中的有效窗口句柄。
DPI 虚拟化
GUITHREADINFO 结构的 rcCaret rect 中返回的坐标是与插入点关联的窗口的逻辑坐标。 它们不会虚拟化为调用线程的模式。要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
API 集 | 在 Windows 8.1) 中引入的 ext-ms-win-ntuser-window-l1-1-1 ( |
请参阅
概念性
引用