Funzione GetGUIThreadInfo (winuser.h)

Recupera informazioni sulla finestra attiva o su un thread GUI specificato.

Sintassi

BOOL GetGUIThreadInfo(
  [in]      DWORD          idThread,
  [in, out] PGUITHREADINFO pgui
);

Parametri

[in] idThread

Tipo: DWORD

Identificatore per il thread per cui recuperare le informazioni. Per recuperare questo valore, usare la funzione GetWindowThreadProcessId . Se questo parametro è NULL, la funzione restituisce informazioni per il thread in primo piano.

[in, out] pgui

Tipo: LPGUITHREADINFO

Puntatore a una struttura GUITHREADINFO che riceve informazioni che descrivono il thread. Si noti che è necessario impostare il membro cbSize su sizeof(GUITHREADINFO) prima di chiamare questa funzione.

Valore restituito

Tipo: BOOL

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Questa funzione ha esito positivo anche se la finestra attiva non è di proprietà del processo chiamante. Se il thread specificato non esiste o ha una coda di input, la funzione avrà esito negativo.

Questa funzione è utile per recuperare informazioni fuori contesto su un thread. Le informazioni recuperate sono uguali a se un'applicazione recupera le informazioni relative a se stessa.

Per un controllo di modifica, il rettangolo rcCaret restituito contiene le informazioni sulla direzione del testo e sulla spaziatura interna. Pertanto, potrebbe non dare la posizione corretta del cursore. Il tipo di carattere Sans Serif usa quattro caratteri per il cursore:

Carattere cursore Unicode, punto di codice
CURSOR_LTR 0xf00c
CURSOR_RTL 0xf00d
CURSOR_THAI 0xf00e
CURSOR_USA 0xfff (questo è un valore marcatore senza glifi associati)
 

Per ottenere il punto di inserimento effettivo nel rettangolo rcCaret , seguire questa procedura.

  1. Chiamare GetKeyboardLayout per recuperare il linguaggio di input corrente.
  2. Determinare il carattere utilizzato per il cursore, in base alla lingua di input corrente.
  3. Chiamare CreateFont usando Sans Serif per il tipo di carattere, l'altezza specificata da rcCaret e una larghezza di zero. Per fnWeight chiamare SystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0). Se pvParam è maggiore di 1, impostare fnWeight su 700, in caso contrario, impostare fnWeight su 400.
  4. Selezionare il tipo di carattere in un contesto del dispositivo (DC) e usare GetCharABCWidths per ottenere la B larghezza del carattere di cursore appropriato.
  5. Aggiungere la B larghezza a rcCaret.sinistra per ottenere il punto di inserimento effettivo.

La funzione potrebbe non restituire handle di finestra validi nella struttura GUITHREADINFO quando viene chiamato per recuperare informazioni per il thread in primo piano, ad esempio quando una finestra perde l'attivazione.

Virtualizzazione DPI

Le coordinate restituite nella correzione rcCaret dello struct GUITHREADINFO sono coordinate logiche in termini di finestra associata al caret. Non vengono virtualizzati nella modalità del thread chiamante.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll
Set di API ext-ms-win-ntuser-window-l1-1-1 (introdotto in Windows 8.1)

Vedi anche

Informazioni concettuali

GUITHREADINFO

GetCursorInfo

GetWindowThreadProcessId

Riferimento

Windows