Bagikan melalui


Fungsi panggilan balik LPOFNHOOKPROC (commdlg.h)

[Dimulai dengan Windows Vista, kotak dialog Buka dan Simpan Sebagai umum telah digantikan oleh Dialog Item Umum. Kami menyarankan agar Anda menggunakan API Dialog Item Umum alih-alih kotak dialog ini dari Pustaka Kotak Dialog Umum.]

Menerima pesan pemberitahuan yang dikirim dari kotak dialog. Fungsi ini juga menerima pesan untuk kontrol tambahan apa pun yang Anda tentukan dengan menentukan templat dialog anak. Prosedur hook OFNHookProc adalah fungsi panggilan balik yang ditentukan aplikasi atau yang ditentukan pustaka yang digunakan dengan kotak dialog Buka dan Simpan Sebagai gaya Penjelajah.

Jenis LPOFNHOOKPROC mendefinisikan penunjuk ke fungsi panggilan balik ini. OFNHookProc adalah tempat penampung untuk nama fungsi yang ditentukan aplikasi.

Sintaks

LPOFNHOOKPROC Lpofnhookproc;

UINT_PTR Lpofnhookproc(
  HWND unnamedParam1,
  UINT unnamedParam2,
  WPARAM unnamedParam3,
  LPARAM unnamedParam4
)
{...}

Parameter

unnamedParam1

Gagang ke kotak dialog anak dari kotak dialog Buka atau Simpan Sebagai . Gunakan fungsi GetParent untuk mendapatkan handel ke kotak dialog Buka atau Simpan Sebagai .

unnamedParam2

Pengidentifikasi pesan yang diterima.

unnamedParam3

Informasi tambahan tentang pesan. Arti yang tepat tergantung pada nilai parameter unnamedParam2 .

unnamedParam4

Informasi tambahan tentang pesan. Arti yang tepat tergantung pada nilai parameter unnamedParam2 . Jika parameter unnamedParam2 menunjukkan pesan WM_INITDIALOG , unnamedParam4 adalah penunjuk ke struktur OPENFILENAME yang berisi nilai yang ditentukan saat kotak dialog dibuat.

Menampilkan nilai

Jika prosedur kait mengembalikan nol, prosedur kotak dialog default memproses pesan.

Jika prosedur kait mengembalikan nilai bukan nol, prosedur kotak dialog default mengabaikan pesan.

Untuk pesan pemberitahuan CDN_SHAREVIOLATION dan CDN_FILEOK , prosedur kait harus mengembalikan nilai bukan nol untuk menunjukkan bahwa ia telah menggunakan fungsi SetWindowLong untuk mengatur nilai DWL_MSGRESULT bukan nol.

Keterangan

Jika Anda tidak menentukan bendera OFN_EXPLORER saat membuat kotak dialog Buka atau Simpan Sebagai , dan Anda menginginkan prosedur kait, Anda harus menggunakan prosedur kait OFNHookProcOldStyle gaya lama. Dalam hal ini, kotak dialog akan memiliki antarmuka pengguna gaya lama.

Saat Anda menggunakan fungsi GetOpenFileName atau GetSaveFileName untuk membuat kotak dialog Buka atau Simpan Sebagai gaya Penjelajah, Anda dapat menyediakan prosedur hook OFNHookProc . Untuk mengaktifkan prosedur kait, gunakan struktur OPENFILENAME yang Anda berikan ke fungsi pembuatan dialog. Tentukan penunjuk ke prosedur kait di anggota lpfnHook dan tentukan bendera OFN_ENABLEHOOK di anggota Bendera .

Jika Anda menyediakan prosedur kait untuk kotak dialog umum gaya Explorer, sistem membuat kotak dialog yang merupakan anak dari kotak dialog default. Prosedur kait bertindak sebagai prosedur dialog untuk dialog anak. Dialog turunan ini didasarkan pada templat yang Anda tentukan dalam struktur OPENFILENAME , atau merupakan dialog turunan default jika tidak ada templat yang ditentukan. Dialog anak dibuat ketika prosedur dialog default sedang memproses pesan WM_INITDIALOG . Setelah dialog anak memproses pesan WM_INITDIALOG sendiri, prosedur dialog default memindahkan kontrol standar, jika perlu, untuk memberi ruang bagi kontrol tambahan dialog anak. Sistem kemudian mengirim pesan pemberitahuan CDN_INITDONE ke prosedur kait.

Prosedur kait tidak menerima pesan yang ditujukan untuk kontrol standar kotak dialog default. Anda dapat subkelas kontrol standar, tetapi ini tidak disarankan karena dapat membuat aplikasi Anda tidak kompatibel dengan versi yang lebih baru. Namun, kotak dialog umum gaya Explorer menyediakan sekumpulan pesan yang dapat digunakan prosedur hook untuk memantau dan mengontrol dialog. Ini termasuk sekumpulan pesan pemberitahuan yang dikirim dari dialog, serta pesan yang dapat Anda kirim untuk mengambil informasi dari dialog. Untuk daftar lengkap pesan ini, lihat Prosedur Hook Gaya Penjelajah.

Jika prosedur kait memproses pesan WM_CTLCOLORDLG , itu harus mengembalikan handel sikat yang valid untuk melukis latar belakang kotak dialog. Secara umum, jika memproses pesan WM_CTLCOLOR* , pesan harus mengembalikan handel kuas yang valid untuk melukis latar belakang kontrol yang ditentukan.

Jangan panggil fungsi EndDialog dari prosedur kait. Sebagai gantinya, prosedur kait dapat memanggil fungsi PostMessage untuk memposting pesan WM_COMMAND dengan nilai IDCANCEL ke prosedur kotak dialog. Memposting IDCANCEL menutup kotak dialog dan menyebabkan fungsi kotak dialog mengembalikan FALSE. Jika Anda perlu tahu mengapa prosedur kait menutup kotak dialog, Anda harus menyediakan mekanisme komunikasi Anda sendiri antara prosedur kait dan aplikasi Anda.

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header commdlg.h (sertakan Windows.h)

Lihat juga

Pustaka Kotak Dialog Umum

Konseptual

GetOpenFileName

GetSaveFileName

OFNHookProcOldStyle

OPENFILENAME

Referensi