Sebenarnya Win32 menggunakan kembali konten dalam aplikasi WPF, gunakan HwndHost, yang merupakan kontrol yang membuat WPF HWNDs tampak seperti konten. Seperti HwndSource, HwndHost sangat mudah untuk digunakan: berasal dari HwndHost dan menerapkan metode BuildWindowCore dan DestroyWindowCore, lalu instantiate kelas turunan HwndHost Anda dan tempat ke dalam aplikasi WPF Anda.
Jika logika Win32 Anda sudah dikemas sebagai kontrol, maka implementasi BuildWindowCore Anda sedikit lebih dari satu panggilan ke CreateWindow. Misalnya, untuk menciptakan kontrol ListBox Win32 di C + +:
Buka ajah [Silahkan] :
Tapi bagaimana kalau kode Win32 tidak terlalu mandiri? Jika demikian, Anda dapat membuat kotak dialog Win32 dan isinya embed ke dalam aplikasi WPF yang lebih besar. Sampel memperlihatkan ini dalam Microsoft Visual Studio dan C + +, meskipun juga mungkin untuk melakukan hal ini dalam bahasa lain atau pada baris perintah.
Mulailah dengan sebuah dialog sederhana, yang dikompilasi ke dalam C + + DLL proyek.
Selanjutnya, memperkenalkan dialog ke aplikasi WPF yang lebih besar:
Mengkompilasi DLL sebagai dikelola (/ CLR)
Belok dialog menjadi kontrol
Tentukan kelas turunan BuildWindowCore dan HwndHost dengan metode DestroyWindowCore
TranslateAccelerator override metode untuk menangani kunci dialog
TabInto override metode untuk mendukung tabbing
OnMnemonic override metode untuk mendukung mnemonik
Instantiate yang HwndHost subclass dan meletakkannya di bawah elemen WPF yang tepat
Mengubah Dialog menjadi Control
Anda dapat mengaktifkan kotak dialog menjadi anak HWND menggunakan WS_CHILD dan DS_CONTROL gaya. Masuk ke file sumber (. Rc) di mana dialog didefinisikan, dan menemukan awal definisi dialog:
Buka ajah [Silahkan] :
Ubah baris kedua ke:
Buka ajah [Silahkan] :
Tindakan ini tidak sepenuhnya paket menjadi kontrol mandiri; Anda masih perlu menelepon IsDialogMessage () sehingga proses dapat Win32 pesan tertentu, tetapi kendali perubahan itu menyediakan cara langsung meletakkan kontrol mereka dalam HWND lain.
Buka ajah [Silahkan] :
Kemudian membuat kelas turunan HwndHost dan menimpa BuildWindowCore dan metode DestroyWindowCore:...
Buka ajah [Silahkan] :
Buka ajah [Silahkan] :
sekian dolo dari saya