Kotak Dialog Font
Kotak dialog Font memungkinkan pengguna memilih atribut untuk font logis, seperti keluarga font dan gaya font terkait, ukuran titik, efek (garis bawah, coretan, dan warna teks), dan skrip (atau kumpulan karakter).
Anda membuat dan menampilkan kotak dialog Font dengan menginisialisasi struktur CHOOSEFONT dan meneruskan struktur ke fungsi ChooseFont .
Cuplikan layar berikut ini memperlihatkan kotak dialog Font umum.
Jika pengguna mengklik tombol OK , fungsi ChooseFont mengembalikan TRUE dan mengatur informasi tentang pilihan pengguna dalam struktur CHOOSEFONT .
Jika pengguna membatalkan kotak dialog Font atau terjadi kesalahan, PilihFont mengembalikan FALSE dan konten struktur LOGFONT tidak ditentukan. Anda dapat menentukan penyebab kesalahan dengan menggunakan fungsi CommDlgExtendedError untuk mengambil nilai kesalahan yang diperluas.
Topik berikut dibahas di bagian ini.
- Bendera Inisialisasi Kotak Dialog Font
- Mengkustomisasi Kotak Dialog Font pada versi Windows yang lebih lama
- Mengkustomisasi Kotak Dialog Font pada Windows 7
Bendera Inisialisasi Kotak Dialog Font
Sebelum memanggil ChooseFont, anggota Bendera dari struktur CHOOSEFONT harus menentukan CF_SCREENFONTS, CF_PRINTERFONTS, atau CF_BOTH, untuk menunjukkan apakah kotak dialog harus mencantumkan font layar, font printer, atau keduanya. Jika Anda menentukan CF_PRINTERFONTS atau CF_BOTH, anggota hDC dari struktur CHOOSEFONT harus menentukan handel ke konteks perangkat untuk printer.
Jika bendera CF_PRINTERFONTS atau CF_BOTH diatur, label deskripsi jenis font muncul di bagian bawah kotak dialog Font .
Dimulai dengan Windows 7, bendera CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTH, dan CF_WYSIWYG tidak lagi digunakan oleh fungsi ChooseFont untuk enumerasi font. Mereka usang di Windows 7. Namun, bendera CF_PRINTERFONTS mempertahankan satu fungsi: untuk menampilkan label deskripsi jenis font di bagian bawah kotak dialog Font .
Anda dapat menggunakan anggota Bendera untuk mengaktifkan atau menonaktifkan beberapa kontrol kotak dialog Font , dan Anda bisa menggunakan anggota Bendera bersama dengan anggota CHOOSEFONT lainnya untuk mengontrol nilai awal beberapa kontrol.
Untuk menampilkan kontrol yang memungkinkan pengguna memilih opsi coretan, garis bawah, dan warna:
- Atur bendera CF_EFFECTS . Anda dapat menggunakan anggota rgbColors dari struktur CHOOSEFONT untuk menentukan warna font awal.
Untuk menentukan nilai awal kontrol kotak dialog Font, Gaya Font, Ukuran, Coretan, dan Garis Bawah:
- Untuk menentukan nilai awal kontrol kotak dialog Font, Gaya Font, Ukuran, Coretan, dan Garis Bawah:
- Atur bendera CF_INITTOLOGFONTSTRUCT di anggota Bendera , bersama dengan anggota struktur LOGFONT yang ditujukkan oleh lpLogFont, untuk menentukan nilai awal untuk atribut font.
- Anda juga bisa menggunakan bendera CF_NOFACESEL, CF_NOSTYLESEL, dan CF_NOSIZESEL untuk mencegah kotak dialog Font menampilkan nilai awal untuk kontrol terkait. Ini berguna ketika Anda bekerja dengan pilihan teks yang memiliki lebih dari satu jenis huruf, gaya, atau ukuran titik. Nilai-nilai ini juga akan diatur dalam Bendera saat SelectFont kembali, jika pengguna tidak memilih nilai yang sesuai.
Untuk menginisialisasi kontrol Gaya Font ke nama gaya tertentu
- Atur bendera CF_USESTYLE dan gunakan anggota lpszStyle untuk menentukan nama gaya.
Catatan
Untuk meng globalisasi aplikasi Anda, tentukan gaya dengan menggunakan anggota lfWeight dan lfItalic dari struktur LOGFONT yang ditujukkan oleh lpLogFont. Nama gaya dapat berubah tergantung pada bahasa antarmuka pengguna sistem.
Untuk menampilkan tombol Terapkan
- Atur bendera CF_APPLY dan berikan prosedur kait untuk memproses pesan WM_COMMAND untuk tombol Terapkan . Prosedur hook dapat mengirim pesan WM_CHOOSEFONT_GETLOGFONT ke kotak dialog untuk mengambil alamat struktur LOGFONT yang berisi pilihan font saat ini.
Untuk menampilkan tombol Bantuan
- Atur bendera CF_SHOWHELP . Anggota hwndOwner harus mengidentifikasi jendela untuk menerima pesan terdaftar HELPMSGSTRING saat pengguna mengklik tombol Bantuan .
Untuk membatasi font yang ditampilkan dalam kotak dialog
- Atur kombinasi bendera CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLY, dan CF_WYSIWYG . Anda juga bisa membatasi gaya yang tersedia yang ditampilkan kotak dialog untuk beberapa font dengan menggunakan nilai CF_NOSIMULATIONS .
Dimulai dengan Windows 7, daftar font yang ditampilkan dalam kotak dialog dibatasi berdasarkan font yang ditampilkan pengguna. Untuk menghapus pembatasan, atur bendera CF_INACTIVEFONTS .
Untuk membatasi nama typeface, gaya, dan ukuran titik yang dapat ditentukan pengguna
- Atur bendera CF_FORCEFONTEXIST untuk membatasi pengguna untuk menentukan hanya nama typeface, gaya, dan ukuran titik yang valid yang tercantum dalam kotak dialog.
- Atur bendera CF_LIMITSIZE untuk membatasi pengguna menentukan ukuran titik dalam rentang yang ditentukan oleh anggota nSizeMin dan nSizeMax .
Untuk membatasi atau menonaktifkan kotak kombo Skrip
- Atur bendera CF_NOSCRIPTSEL untuk menonaktifkan kotak kombo Skrip , atau atur bendera CF_SELECTSCRIPT untuk membatasi pilihan dalam kotak kombo Skrip ke kumpulan karakter tertentu.
Mengkustomisasi Kotak Dialog Font pada versi Windows yang lebih lama
Anda dapat menyediakan templat kustom untuk kotak dialog Font , misalnya, jika Anda ingin menyertakan kontrol tambahan yang unik untuk aplikasi Anda. Fungsi ChooseFont menggunakan templat kustom Anda sebagai pengganti templat default.
Untuk menyediakan templat kustom untuk kotak dialog Font
- Buat templat kustom dengan memodifikasi templat default yang ditentukan dalam file Font.dlg. Pengidentifikasi kontrol yang digunakan dalam templat dialog Font default ditentukan dalam file Dlgs.h.
- Gunakan struktur CHOOSEFONT untuk mengaktifkan templat sebagai berikut:
- Jika templat kustom Anda adalah sumber daya dalam aplikasi atau pustaka tautan dinamis, atur bendera CF_ENABLETEMPLATE di anggota Bendera . Gunakan anggota hInstance dan lpTemplateName dari struktur untuk mengidentifikasi modul dan nama sumber daya.
- Jika templat kustom Anda sudah dalam memori, atur bendera CF_ENABLETEMPLATEHANDLE . Gunakan anggota hInstance untuk mengidentifikasi objek memori yang berisi templat.
Anda dapat menyediakan prosedur hook CFHookProc untuk kotak dialog Font . Prosedur kait dapat memproses pesan yang dikirim ke kotak dialog dan mengirim pesan ke kotak dialog. Jika Anda menggunakan templat kustom untuk menentukan kontrol tambahan, Anda harus menyediakan prosedur kait untuk memproses input untuk kontrol Anda.
Untuk mengaktifkan prosedur kait untuk kotak dialog Font
- Atur bendera CF_ENABLEHOOK di anggota Bendera struktur CHOOSEFONT .
- Tentukan alamat prosedur kait di anggota lpfnHook .
Setelah memproses pesan WM_INITDIALOG , prosedur kotak dialog mengirimkan pesan WM_INITDIALOG ke prosedur hook. Parameter lParam pesan ini adalah penunjuk ke struktur SELECTFONT yang digunakan untuk menginisialisasi kotak dialog.
Prosedur hook dapat mengirim pesan WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONT, dan WM_CHOOSEFONT_SETFLAGS ke kotak dialog untuk mendapatkan dan mengatur nilai dan bendera kotak dialog saat ini.
Mengkustomisasi Kotak Dialog Font pada Windows 7
Cuplikan layar berikut ini memperlihatkan kotak dialog Font umum di Windows 7.
Di versi Windows sebelumnya, file templat font.dlg berisi satu templat ChooseFont default. File templat font.dlg di Windows 7 berisi dua templat default: templat default dari versi Windows sebelumnya dan templat Windows 7 ChooseFont baru. Oleh karena itu, saat Anda mengkustomisasi kotak dialog Font pada Windows 7, Anda harus mempertimbangkan masalah berikut.
Gunakan templat baru saat Anda membuat templat kustom untuk aplikasi yang berjalan di Windows 7. Templat baru ini berisi kontrol tautan yang dapat diklik pengguna untuk meluncurkan jendela font Panel Kontrol, seperti yang ditunjukkan pada cuplikan layar berikut.
Untuk menggunakan kontrol tautan ini, aplikasi panggilan Anda harus menggunakan COMCTL32.DLL versi 6 atau yang lebih baru. Jika tidak, fungsi ChooseFont mengembalikan kesalahan saat mencoba membuat kontrol tautan di templat kustom Anda. Untuk menentukan apakah kontrol ini diaktifkan, kompilasi aplikasi panggilan Anda terhadap COMCTL32.DLL versi 6.0. Untuk informasi selengkapnya, lihat Mengaktifkan Gaya Visual dengan Kontrol Umum.
Jika aplikasi Anda menggunakan COMCTL32.DLL versi 5.0 atau yang lebih lama, Anda harus melakukan hal berikut saat membuat templat kustom:
Tentukan kontrol sebagai PUSHBUTTON. Kontrol yang digunakan untuk meluncurkan Font Panel Kontrol akan muncul sebagai tombol daripada sebagai tautan.
Ganti teks berikut di font.dlg:
CONTROL "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink", WS_TABSTOP, 7, 199, 227, 9
dengan teks berikut:
PUSHBUTTON "S&how more fonts", IDC_MANAGE_LINK, 7, 199, 74, 14 , WS_TABSTOP
Untuk memastikan bahwa aplikasi Anda menggunakan templat kustom, Anda harus menentukan templat kustom dengan bendera CF_ENABLETEMPLATE , membuat templat kustom berdasarkan templat Windows 7 ChooseFont, lalu secara opsional mengaktifkan prosedur kait.
Jika Anda mengaktifkan prosedur hook tanpa membuat templat kustom, templat ChooseFont default untuk versi Windows sebelumnya akan dimuat.
Catatan
Anda harus menentukan jenis kontrol CONTROL atau PUSHBUTTON di templat baru Anda, tergantung pada versi COMMCTL.DLL yang dikompilasi aplikasi Anda. Perhatikan juga bahwa fitur spesifik Windows 7, seperti tampilan WYSIWYG daftar font dan keluarga yang diperluas, tidak tersedia saat aplikasi Anda berjalan pada versi sistem operasi Windows yang lebih lama.