Bagikan melalui


Fungsi TranslateAcceleratorA (winuser.h)

Memproses kunci akselerator untuk perintah menu. Fungsi ini menerjemahkan pesan WM_KEYDOWN atau WM_SYSKEYDOWN ke pesan WM_COMMAND atau WM_SYSCOMMAND (jika ada entri untuk kunci dalam tabel akselerator yang ditentukan) lalu mengirim pesan WM_COMMAND atau WM_SYSCOMMAND langsung ke prosedur jendela yang ditentukan. TranslateAccelerator tidak kembali sampai prosedur jendela memproses pesan.

Sintaks

int TranslateAcceleratorA(
  [in] HWND   hWnd,
  [in] HACCEL hAccTable,
  [in] LPMSG  lpMsg
);

Parameter

[in] hWnd

Jenis: HWND

Handel ke jendela yang pesannya akan diterjemahkan.

[in] hAccTable

Jenis: HACCEL

Handel ke tabel akselerator. Tabel akselerator harus dimuat oleh panggilan ke fungsi LoadAccelerators atau dibuat oleh panggilan ke fungsi CreateAcceleratorTable .

[in] lpMsg

Jenis: LPMSG

Penunjuk ke struktur MSG yang berisi informasi pesan yang diambil dari antrean pesan utas panggilan menggunakan fungsi GetMessage atau PeekMessage .

Nilai kembali

Jenis: int

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

Untuk membedakan pesan yang dikirim fungsi ini dari pesan yang dikirim oleh menu atau kontrol, kata urutan tinggi dari parameter wParam dari pesan WM_COMMAND atau WM_SYSCOMMAND berisi nilai 1.

Kombinasi kunci Akselerator yang digunakan untuk memilih item dari menu jendela diterjemahkan ke dalam pesan WM_SYSCOMMAND ; semua kombinasi kunci akselerator lainnya diterjemahkan ke dalam pesan WM_COMMAND .

Ketika TranslateAccelerator mengembalikan nilai bukan nol dan pesan diterjemahkan, aplikasi tidak boleh menggunakan fungsi TranslateMessage untuk memproses pesan lagi.

Akselerator tidak perlu sesuai dengan perintah menu.

Jika perintah akselerator sesuai dengan item menu, aplikasi dikirim WM_INITMENU dan WM_INITMENUPOPUP pesan, seolah-olah pengguna mencoba menampilkan menu. Namun, pesan-pesan ini tidak dikirim jika ada salah satu kondisi berikut:

  • Jendela dinonaktifkan.
  • Kombinasi tombol akselerator tidak sesuai dengan item pada menu jendela dan jendela diminimalkan.
  • Penangkapan mouse berlaku. Untuk informasi tentang pengambilan mouse, lihat fungsi SetCapture .
Jika jendela yang ditentukan adalah jendela aktif dan tidak ada jendela yang memiliki fokus keyboard (yang umumnya terjadi jika jendela diminimalkan), TranslateAccelerator menerjemahkan pesan WM_SYSKEYUP dan WM_SYSKEYDOWN alih-alih pesan WM_KEYUP dan WM_KEYDOWN .

Jika terjadi penekanan tombol akselerator yang sesuai dengan item menu saat jendela yang memiliki menu diminimalkan, TranslateAccelerator tidak mengirim pesan WM_COMMAND . Namun, jika terjadi penekanan tombol akselerator yang tidak cocok dengan item apa pun di menu jendela atau di menu jendela , fungsi mengirimkan pesan WM_COMMAND , bahkan jika jendela diminimalkan.

Contoh

Misalnya, lihat Membuat Akselerator untuk Atribut Font.

Catatan

Header winuser.h mendefinisikan TranslateAccelerator 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

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 (sertakan Windows.h)
Pustaka User32.lib
DLL User32.dll

Lihat juga

Konseptual

CreateAcceleratorTable

GetMessage

Akselerator Keyboard

LoadAccelerators

MSG

PeekMessage

Referensi

SetCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN