Fungsi GetGUIThreadInfo (winuser.h)

Mengambil informasi tentang jendela aktif atau utas GUI tertentu.

Sintaks

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

Parameter

[in] idThread

Jenis: DWORD

Pengidentifikasi untuk utas yang informasinya akan diambil. Untuk mengambil nilai ini, gunakan fungsi GetWindowThreadProcessId . Jika parameter ini NULL, fungsi mengembalikan informasi untuk utas latar depan.

[in, out] pgui

Jenis: LPGUITHREADINFO

Penunjuk ke struktur GUITHREADINFO yang menerima informasi yang menjelaskan utas. Perhatikan bahwa Anda harus mengatur anggota cbSize ke sizeof(GUITHREADINFO) sebelum memanggil fungsi ini.

Nilai kembali

Jenis: BOOL

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Fungsi ini berhasil meskipun jendela aktif tidak dimiliki oleh proses panggilan. Jika utas yang ditentukan tidak ada atau memiliki antrean input, fungsi akan gagal.

Fungsi ini berguna untuk mengambil informasi di luar konteks tentang utas. Informasi yang diambil sama seperti jika aplikasi mengambil informasi tentang dirinya sendiri.

Untuk kontrol edit, persegi panjang rcCaret yang dikembalikan berisi tanda sisipan ditambah informasi tentang arah teks dan padding. Dengan demikian, mungkin tidak memberikan posisi kursor yang benar. Font Sans Serif menggunakan empat karakter untuk kursor:

Karakter kursor Titik kode Unicode
CURSOR_LTR 0xf00c
CURSOR_RTL 0xf00d
CURSOR_THAI 0xf00e
CURSOR_USA 0xfff (ini adalah nilai penanda tanpa glyph terkait)
 

Untuk mendapatkan titik penyisipan aktual di persegi panjang rcCaret , lakukan langkah-langkah berikut.

  1. Panggil GetKeyboardLayout untuk mengambil bahasa input saat ini.
  2. Tentukan karakter yang digunakan untuk kursor, berdasarkan bahasa input saat ini.
  3. Panggil CreateFont menggunakan Sans Serif untuk font, tinggi yang diberikan oleh rcCaret, dan lebar zero. Untuk fnWeight, panggil SystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0). Jika pvParam lebih besar dari 1, atur fnWeight ke 700, jika tidak, atur fnWeight ke 400.
  4. Pilih font ke dalam konteks perangkat (DC) dan gunakan GetCharABCWidths untuk mendapatkan B lebar karakter kursor yang sesuai.
  5. Tambahkan lebar ke BrcCaret.kiri untuk mendapatkan titik penyisipan aktual.

Fungsi mungkin tidak mengembalikan handel jendela yang valid dalam struktur GUITHREADINFO ketika dipanggil untuk mengambil informasi untuk utas latar depan, seperti ketika jendela kehilangan aktivasi.

Virtualisasi DPI

Koordinat yang dikembalikan dalam rect rcCaret dari struktur GUITHREADINFO adalah koordinat logis dalam hal jendela yang terkait dengan tanda sisipan. Mereka tidak divirtualisasikan ke dalam mode utas panggilan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (termasuk Windows.h)
Pustaka User32.lib
DLL User32.dll
Set API ext-ms-win-ntuser-window-l1-1-1 (diperkenalkan dalam Windows 8.1)

Lihat juga

Konseptual

GUITHREADINFO

GetCursorInfo

GetWindowThreadProcessId

Referensi

Windows