Fungsi PeekMessageW (winuser.h)
Mengirimkan pesan masuk yang tidak diantrekan, memeriksa antrean pesan utas untuk pesan yang diposting, dan mengambil pesan (jika ada).
Sintaksis
BOOL PeekMessageW(
[out] LPMSG lpMsg,
[in, optional] HWND hWnd,
[in] UINT wMsgFilterMin,
[in] UINT wMsgFilterMax,
[in] UINT wRemoveMsg
);
Parameter
[out] lpMsg
Jenis: LPMSG
Penunjuk ke struktur MSG
[in, optional] hWnd
Jenis: HWND
Handel ke jendela yang pesannya akan diambil. Jendela harus milik utas saat ini.
Jika
Jika
[in] wMsgFilterMin
Jenis: UINT
Nilai pesan pertama dalam rentang pesan yang akan diperiksa. Gunakan WM_KEYFIRST (0x0100) untuk menentukan pesan keyboard pertama atau WM_MOUSEFIRST (0x0200) untuk menentukan pesan mouse pertama.
Jika wMsgFilterMin dan wMsgFilterMax keduanya nol, PeekMessage mengembalikan semua pesan yang tersedia (artinya, tidak ada pemfilteran rentang yang dilakukan).
[in] wMsgFilterMax
Jenis: UINT
Nilai pesan terakhir dalam rentang pesan yang akan diperiksa. Gunakan WM_KEYLAST untuk menentukan pesan keyboard terakhir atau WM_MOUSELAST untuk menentukan pesan mouse terakhir.
Jika wMsgFilterMin dan wMsgFilterMax keduanya nol, PeekMessage mengembalikan semua pesan yang tersedia (artinya, tidak ada pemfilteran rentang yang dilakukan).
[in] wRemoveMsg
Jenis: UINT
Menentukan bagaimana pesan akan ditangani. Parameter ini bisa berupa satu atau beberapa nilai berikut.
Nilai | Arti |
---|---|
PM_NOREMOVE0x0000 |
Pesan tidak dihapus dari antrean setelah diproses dengan PeekMessage. |
PM_REMOVE0x0001 |
Pesan dihapus dari antrean setelah diproses dengan PeekMessage. |
PM_NOYIELD0x0002 |
Mencegah sistem merilis utas apa pun yang menunggu penelepon menganggur (lihat WaitForInputIdle). Gabungkan nilai ini dengan PM_NOREMOVE atau PM_REMOVE. |
Secara default, semua jenis pesan diproses. Untuk menentukan bahwa hanya pesan tertentu yang harus diproses, tentukan satu atau beberapa nilai berikut.
Nilai | Arti |
---|---|
PM_QS_INPUT(QS_INPUT << 16) |
Memproses pesan mouse dan keyboard. |
PM_QS_POSTMESSAGE((QS_POSTMESSAGE \| QS_HOTKEY \| QS_TIMER) << 16) |
Proses semua pesan yang diposting, termasuk timer dan hotkey. |
PM_QS_PAINT(QS_PAINT << 16) |
Memproses pesan cat. |
PM_QS_SENDMESSAGE(QS_SENDMESSAGE << 16) |
Memproses semua pesan terkirim. |
Untuk informasi selengkapnya tentang bendera dan jenis pesan QS_
yang tercantum, lihat dokumentasi GetQueueStatus.
Mengembalikan nilai
Jenis: BOOL
Jika pesan tersedia, nilai yang dikembalikan bukan nol.
Jika tidak ada pesan yang tersedia, nilai yang dikembalikan adalah nol.
Komentar
Perhatikan bahwa PeekMessage selalu mengambil pesan WM_QUIT, apa pun nilai yang Anda tentukan untuk wMsgFilterMin dan wMsgFilterMax.
Selama panggilan ini, sistem mengirimkan (
- Pesan terkirim
- Pesan yang diposting
- Pesan input (perangkat keras) dan peristiwa internal sistem
- Pesan terkirim (lagi)
- pesan WM_PAINT
- WM_TIMER pesan
Fungsi PeekMessage biasanya tidak menghapus pesan WM_PAINT dari antrean.
WM_PAINT pesan tetap dalam antrean hingga diproses. Namun, jika pesan
Jika jendela tingkat atas berhenti merespons pesan selama lebih dari beberapa detik, sistem menganggap jendela tidak merespons dan menggantinya dengan jendela hantu yang memiliki atribut z-order, lokasi, ukuran, dan visual yang sama. Ini memungkinkan pengguna untuk memindahkannya, mengubah ukurannya, atau bahkan menutup aplikasi. Namun, ini adalah satu-satunya tindakan yang tersedia karena aplikasi sebenarnya tidak merespons. Ketika aplikasi sedang di-debug, sistem tidak menghasilkan jendela hantu.
Virtualisasi DPI
API ini tidak berpartisipasi dalam virtualisasi DPI. Output berada dalam mode jendela yang ditargetkan pesan. Utas panggilan tidak dipertimbangkan.Contoh
Misalnya, lihat Memeriksa Antrean Pesan.
Nota
Header winuser.h mendefinisikan PeekMessage sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosedur UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
server minimum yang didukung |
Windows 2000 Server [hanya aplikasi desktop] |
Platform Target |
Windows |
Header |
winuser.h (termasuk Windows.h) |
Pustaka |
User32.lib |
DLL |
User32.dll |
set API |
ext-ms-win-ntuser-message-l1-1-0 (diperkenalkan di Windows 8) |
Lihat juga
Konseptual
MSG
Pesan
Sumber Daya Lain
Referensi
WaitForInputIdle
WaitMessage