Bagikan melalui


Metode IPreviewHandler::TranslateAccelerator (shobjidl_core.h)

Mengarahkan handler pratinjau untuk menangani penekanan tombol yang dilewatkan dari pompa pesan proses tempat handler pratinjau berjalan.

Sintaks

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

Parameter

[in] pmsg

Jenis: MSG*

Penunjuk ke pesan jendela.

Nilai kembali

Jenis: HRESULT

Jika pesan penekanan tombol dapat diproses oleh handler pratinjau, handler akan memprosesnya dan mengembalikan S_OK. Jika handler pratinjau tidak dapat memproses pesan penekanan tombol, ia akan menawarkannya ke host menggunakan TranslateAccelerator. Jika host memproses pesan, metode ini akan mengembalikan S_OK. Jika host tidak memproses pesan, metode ini akan mengembalikan S_FALSE.

Keterangan

Fungsi ini hanya akan dipanggil dari pompa pesan proses tempat penangan pratinjau berjalan. Fungsi ini memungkinkan penerusan pesan penekanan tombol dari pompa pesan ke host menggunakan TranslateAccelerator.

Ketika handler pratinjau menerima pesan (penekanan tombol) dari pompa pesannya, penangan pratinjau bertanggung jawab untuk meneruskannya ke host-nya.

Ketika IObjectWithSite::SetSite dipanggil pada handler pratinjau, referensi ke host handler pratinjau diteruskan. Objek harus segera QueryInterface situs tersebut untuk IPreviewHandlerFrame, dan menyimpan pointer tersebut.

Handler pratinjau kemudian memiliki opsi untuk memanggil GetWindowContext untuk mendapatkan tabel akselerator untuk memfilter penekanan tombol. Pratinjau kemudian dapat membandingkan penekanan tombol dengan tabel akselerator tersebut menggunakan IsAccelerator dan hanya memanggil IPreviewHandler::TranslateAccelerator untuk penekanan tombol yang cocok. Hal ini dapat menyebabkan peningkatan performa yang sederhana. Handler pratinjau harus merilis tabel akselerator menggunakan fungsi DestroyAcceleratorTable .

Juga dapat diterima bagi handler pratinjau untuk menghindari penggunaan tabel sama sekali dan memanggil IPreviewHandler::TranslateAccelerator untuk setiap penekanan tombol. Perhatikan bahwa semua penangan pratinjau yang berjalan dalam proses integritas rendah harus menggunakan metode ini.

Saat tombol tab ditekan, jika handler pratinjau memiliki lebih dari satu perhentian tab, tombol tersebut bertanggung jawab untuk memindahkan fokus keyboard dalam tab tersebut berhenti. Jika fokus keyboard saat ini berada pada salah satu pemberhentian tab tersebut, dan memajukan fokus keyboard akan memindahkannya ke penghentian tab pemratinjau lain, pemratinjau harus memanggil SetFocus pada perhentian tab berikutnya. Jika tidak, kunci tab harus diteruskan ke host untuk menangani tab dari pemratinjau.

Persyaratan

   
Klien minimum yang didukung Windows Vista, Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header shobjidl_core.h (termasuk Shobjidl.h)
Redistribusi Windows Search 4 atau yang lebih baru