Функция 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 , выполните следующие действия.
- Вызовите Метод GetKeyboardLayout , чтобы получить текущий язык ввода.
- Определите символ, используемый для курсора, на основе текущего языка ввода.
- Вызовите CreateFont, используя Sans Serif для шрифта, высоты, заданной
zero
rcCaret, и ширины . Для параметра fnWeight вызовитеSystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0)
. Если значение pvParam больше 1, задайте для параметра fnWeight значение 700, в противном случае задайте значение fnWeight равным 400. - Выберите шрифт в контексте устройства и используйте GetCharABCWidths , чтобы получить
B
ширину соответствующего символа курсора. - Добавьте ширину
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) |
См. также раздел
Основные понятия
Справочные материалы