Tentang Kontrol Hot Key

Kontrol tombol panas adalah jendela yang memungkinkan pengguna memasukkan kombinasi penekanan tombol untuk digunakan sebagai kunci panas. Tombol panas adalah kombinasi tombol yang dapat ditekan pengguna untuk melakukan tindakan dengan cepat. Misalnya, pengguna dapat membuat hot key yang mengaktifkan jendela tertentu dan membawanya ke bagian atas z-order. Kontrol hot key menampilkan pilihan pengguna dan memastikan bahwa pengguna memilih kombinasi kunci yang valid. Cuplikan layar berikut menunjukkan bagaimana kontrol tombol panas muncul dalam kotak dialog setelah pengguna menekan tombol Alt.

screen shot of a dialog box that contains a hot key control

Menggunakan Kontrol Hot Key

Saat pengguna memasukkan kombinasi kunci untuk digunakan sebagai kunci panas, nama kunci muncul di kontrol tombol panas. Kombinasi kunci dapat terdiri dari tombol pengubah (seperti CTRL, ALT, atau SHIFT) dan kunci yang menyertainya (seperti kunci karakter, tombol panah, tombol fungsi, dan sebagainya).

Setelah pengguna memilih kombinasi kunci, aplikasi mengambil kombinasi kunci dari kontrol kunci panas dan menggunakannya untuk menyiapkan kunci panas di sistem. Informasi yang diambil dari kontrol kunci panas mencakup bendera yang menunjukkan kunci pengubah dan kode kunci virtual kunci yang menyertainya.

Aplikasi dapat menggunakan informasi yang disediakan oleh kontrol hot key untuk menyiapkan hot key global atau hot key khusus utas. Hot key global dikaitkan dengan jendela tertentu; ini memungkinkan pengguna untuk mengaktifkan jendela dari bagian mana pun dari sistem. Aplikasi menetapkan kunci panas global dengan menggunakan pesan WM_SETHOTKEY. Setiap kali pengguna menekan tombol panas global, jendela yang ditentukan di WM_SETHOTKEY menerima pesan WM_SYSCOMMAND yang menentukan nilai SC_HOTKEY. Pesan ini mengaktifkan jendela yang menerimanya. Hot key tetap valid sampai aplikasi yang disebut WM_SETHOTKEY keluar.

Hot key khusus utas menghasilkan pesan WM_HOTKEY yang diposting ke awal utas tertentu sehingga dihapus oleh perulangan berikutnya dari perulangan pesan. Aplikasi menetapkan hot key khusus utas dengan menggunakan fungsi RegisterHotKey.

Pesan Kontrol Hot Key

Setelah membuat kontrol kunci panas, aplikasi berinteraksi dengannya dengan menggunakan tiga pesan: HKM_SETRULES, HKM_SETHOTKEY, dan HKM_GETHOTKEY.

Aplikasi dapat mengirim pesan HKM_SETRULES untuk menentukan sekumpulan kombinasi tombol CTRL, ALT, dan SHIFT yang dianggap sebagai tombol panas yang tidak valid. Jika aplikasi menentukan kombinasi kunci yang tidak valid, aplikasi juga harus menentukan kombinasi pengubah default untuk digunakan saat pengguna memilih kombinasi yang tidak valid. Ketika pengguna memasukkan kombinasi yang tidak valid, sistem melakukan operasi OR logis pada kombinasi yang tidak valid dan kombinasi default. Hasilnya dianggap sebagai kombinasi yang valid; ini dikonversi ke string dan ditampilkan dalam kontrol.

Pesan HKM_SETHOTKEY memungkinkan aplikasi untuk mengatur kombinasi tombol panas untuk kontrol kunci panas. Pesan ini juga biasanya digunakan saat kontrol kunci panas dibuat.

Aplikasi menggunakan pesan HKM_GETHOTKEY untuk mengambil kode kunci virtual dan bendera pengubah kunci panas yang dipilih oleh pengguna.

Pemberitahuan Kontrol Kunci Panas

Kontrol kunci panas tidak mengirim kode pemberitahuan apa pun melalui pesan WM_NOTIFY. Namun, ini akan mengirim pemberitahuan EN_CHANGE melalui pesan WM_COMMAND ketika pengguna mengubah konten kontrol.

Pemrosesan Pesan Hot Key Default

Bagian ini menjelaskan pesan jendela yang ditangani oleh prosedur jendela untuk kelas jendela HOTKEY_CLASS yang telah ditentukan sebelumnya yang digunakan dengan kontrol kunci panas.

Pesan Pemrosesan dilakukan
WM_CHAR Mengambil kode kunci virtual.
WM_CREATE Menginisialisasi kontrol tombol panas, menghapus aturan kunci panas apa pun, dan menggunakan font sistem.
WM_ERASEBKGND Menyembunyikan tanda sisipan, memanggil fungsi DefWindowProc , dan menampilkan tanda sisipan lagi.
WM_GETDLGCODE Mengembalikan kombinasi nilai DLGC_WANTCHARS dan DLGC_WANTARROWS.
WM_GETFONT Mengambil font.
WM_KEYDOWN Memanggil fungsi DefWindowProc jika kuncinya adalah ENTER, TAB, SPACE BAR, DEL, ESC, atau BACKSPACE. Jika kuncinya adalah SHIFT, CTRL, atau ALT, tombol tersebut memeriksa apakah kombinasi valid dan, jika ya, mengatur tombol panas menggunakan kombinasi. Semua kunci lain diatur sebagai kunci panas tanpa validitasnya diperiksa terlebih dahulu.
WM_KEYUP Mengambil kode kunci virtual.
WM_KILLFOCUS Menghancurkan tanda sisipan.
WM_LBUTTONDOWN Mengatur fokus ke jendela.
WM_NCCREATE Mengatur gaya jendela WS_EX_CLIENTEDGE.
WM_PAINT Melukis kontrol tombol panas.
WM_SETFOCUS Membuat dan memperlihatkan tanda sisipan.
WM_SETFONT Mengatur font.
WM_SYSCHAR Mengambil kode kunci virtual.
WM_SYSKEYDOWN Memanggil fungsi DefWindowProc jika kuncinya adalah ENTER, TAB, SPACE BAR, DEL, ESC, atau BACKSPACE. Jika kuncinya adalah SHIFT, CTRL, atau ALT, tombol tersebut memeriksa apakah kombinasi valid dan, jika ya, mengatur tombol panas menggunakan kombinasi. Semua kunci lain diatur sebagai kunci panas tanpa validitasnya diperiksa terlebih dahulu.
WM_SYSKEYUP Mengambil kode kunci virtual.