GetGUIThreadInfo-Funktion (winuser.h)
Ruft Informationen zum aktiven Fenster oder einem angegebenen GUI-Thread ab.
Syntax
BOOL GetGUIThreadInfo(
[in] DWORD idThread,
[in, out] PGUITHREADINFO pgui
);
Parameter
[in] idThread
Art: DWORD
Der Bezeichner für den Thread, für den Informationen abgerufen werden sollen. Verwenden Sie zum Abrufen dieses Werts die GetWindowThreadProcessId-Funktion . Wenn dieser Parameter NULL ist, gibt die Funktion Informationen für den Vordergrundthread zurück.
[in, out] pgui
Typ: LPGUITHREADINFO
Ein Zeiger auf eine GUITHREADINFO-Struktur , die Informationen empfängt, die den Thread beschreiben. Beachten Sie, dass Sie das cbSize-Element auf festlegen müssen, sizeof(GUITHREADINFO)
bevor Sie diese Funktion aufrufen.
Rückgabewert
Typ: BOOL
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Diese Funktion ist auch dann erfolgreich, wenn sich das aktive Fenster nicht im Besitz des aufrufenden Prozesses befindet. Wenn der angegebene Thread nicht vorhanden ist oder über eine Eingabewarteschlange verfügt, schlägt die Funktion fehl.
Diese Funktion ist nützlich, um Kontextbezogene Informationen zu einem Thread abzurufen. Die abgerufenen Informationen sind identisch mit dem, wenn eine Anwendung die Informationen über sich selbst abgerufen hat.
Für ein Bearbeitungssteuerelement enthält das zurückgegebene rcCaret-Rechteck das Caret-Element sowie Informationen zu Textrichtung und Auffüllung. Daher gibt er möglicherweise nicht die richtige Position des Cursors an. Die Schriftart Sans Serif verwendet vier Zeichen für den Cursor:
Cursorzeichen | Unicode-Codepunkt |
---|---|
CURSOR_LTR | 0xf00c |
CURSOR_RTL | 0xf00d |
CURSOR_THAI | 0xf00e |
CURSOR_USA | 0xfff (dies ist ein Markerwert ohne zugeordnete Glyphe) |
Führen Sie die folgenden Schritte aus, um die tatsächliche Einfügemarke im rcCaret-Rechteck abzurufen.
- Rufen Sie GetKeyboardLayout auf, um die aktuelle Eingabesprache abzurufen.
- Bestimmen Sie das für den Cursor verwendete Zeichen basierend auf der aktuellen Eingabesprache.
- Rufen Sie CreateFont mit Sans Serif für die Schriftart, die von rcCaret angegebene Höhe und eine Breite von auf
zero
. Rufen Sie für fnWeight aufSystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0)
. Wenn pvParam größer als 1 ist, legen Sie fnWeight auf 700 fest, andernfalls fnWeight auf 400. - Wählen Sie die Schriftart in einem Gerätekontext (Device Context, DC) aus, und verwenden Sie GetCharABCWidths , um die
B
Breite des entsprechenden Cursorzeichens abzurufen. - Fügen Sie rcCaret die
B
Breite hinzu.links, um die tatsächliche Einfügemarke zu erhalten.
Die Funktion gibt möglicherweise keine gültigen Fensterhandles in der GUITHREADINFO-Struktur zurück, wenn sie aufgerufen wird, um Informationen für den Vordergrundthread abzurufen, z. B. wenn ein Fenster die Aktivierung verliert.
DPI-Virtualisierung
Die koordinaten, die im rcCaret-Rechteck der GUITHREADINFO-Struktur zurückgegeben werden, sind logische Koordinaten im Sinne des Fensters, das dem Caretzeichen zugeordnet ist. Sie werden nicht in den Modus des aufrufenden Threads virtualisiert.Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winuser.h (windows.h einschließen) |
Bibliothek | User32.lib |
DLL | User32.dll |
APIs | ext-ms-win-ntuser-window-l1-1-1 (eingeführt in Windows 8.1) |
Siehe auch
Konzept
Referenz