Поделиться через


Функция GetGUIThreadInfo (winuser.h)

Извлекает сведения об активном окне или указанном потоке графического интерфейса пользователя.

Синтаксис

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 использует четыре символа для курсора:

Символ курсора кодовые точки Юникода
CURSOR_LTR 0xf00c
CURSOR_RTL 0xf00d
CURSOR_THAI 0xf00e
CURSOR_США 0xfff (это значение маркера без связанного глифа)
 

Чтобы получить фактическую точку вставки в прямоугольнике rcCaret , выполните следующие действия.

  1. Вызовите Метод GetKeyboardLayout , чтобы получить текущий язык ввода.
  2. Определите символ, используемый для курсора, на основе текущего языка ввода.
  3. Вызовите CreateFont, используя Sans Serif для шрифта, высоты, заданной zerorcCaret, и ширины . Для параметра fnWeight вызовите SystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0). Если значение pvParam больше 1, задайте для параметра fnWeight значение 700, в противном случае задайте значение fnWeight равным 400.
  4. Выберите шрифт в контексте устройства и используйте GetCharABCWidths , чтобы получить B ширину соответствующего символа курсора.
  5. Добавьте ширину B в rcCaret.слева , чтобы получить фактическую точку вставки.

Функция может не возвращать допустимые дескрипторы окон в структуре GUITHREADINFO при вызове для получения сведений для потока переднего плана, например при потере активации окна.

Виртуализация DPI

Координаты, возвращаемые в прямоугольнике rcCaret структуры GUITHREADINFO , являются логическими координатами с точки зрения окна, связанного с курсором. Они не виртуализированы в режиме вызывающего потока.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-window-l1-1-1 (появилось в Windows 8.1)

См. также раздел

Основные понятия

GUITHREADINFO

GetCursorInfo

GetWindowThreadProcessId

Справочные материалы

Windows