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.
- Panggil GetKeyboardLayout untuk mengambil bahasa input saat ini.
- Tentukan karakter yang digunakan untuk kursor, berdasarkan bahasa input saat ini.
- Panggil CreateFont menggunakan Sans Serif untuk font, tinggi yang diberikan oleh rcCaret, dan lebar
zero
. Untuk fnWeight, panggilSystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0)
. Jika pvParam lebih besar dari 1, atur fnWeight ke 700, jika tidak, atur fnWeight ke 400. - Pilih font ke dalam konteks perangkat (DC) dan gunakan GetCharABCWidths untuk mendapatkan
B
lebar karakter kursor yang sesuai. - Tambahkan lebar ke
B
rcCaret.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
Referensi