Panduan: Menempatkan Kontrol Pada Toolbar

Artikel ini menjelaskan cara menambahkan tombol bilah alat yang berisi kontrol Windows ke bilah alat. Di MFC, tombol toolbar harus kelas turunan Kelas CMFCToolBarButton, misalnya Kelas CMFCToolBarComboBoxButton, Kelas CMFCToolBarEditBoxButton, Kelas CMFCDropDownToolbarButton, atau Kelas CMFCToolBarMenuButton.

Menambahkan Kontrol ke Bilah Alat

Untuk menambahkan kontrol ke toolbar, ikuti langkah-langkah berikut:

  1. Pesan ID sumber daya dummy untuk tombol di sumber daya toolbar induk. Untuk informasi selengkapnya tentang cara membuat tombol dengan menggunakan Editor Toolbar di Visual Studio, lihat artikel Editor Toolbar.

  2. Pesan gambar toolbar (ikon tombol) untuk tombol di semua bitmap toolbar induk.

  3. Di handler pesan yang memproses AFX_WM_RESETTOOLBAR pesan, lakukan langkah-langkah berikut:

    1. Buat kontrol tombol dengan menggunakan CMFCToolbarButtonkelas -turunan.

    2. Ganti tombol dummy dengan kontrol baru dengan menggunakan CMFCToolBar::ReplaceButton. Anda dapat membuat objek tombol pada tumpukan, karena ReplaceButton menyalin objek tombol dan mempertahankan salinan.

Catatan

Jika Anda mengaktifkan kustomisasi di aplikasi, Anda mungkin harus mengatur ulang toolbar dengan menggunakan tombol Reset pada tab Toolbar dari kotak dialog Kustomisasi untuk melihat kontrol yang diperbarui di aplikasi Anda setelah kompilasi ulang. Status toolbar disimpan di registri Windows, dan informasi registri dimuat dan diterapkan setelah ReplaceButton metode dijalankan selama pengaktifan aplikasi.

Kontrol dan Kustomisasi Bilah Alat

Tab Perintah dari kotak dialog Kustomisasi berisi daftar perintah yang tersedia dalam aplikasi. Secara default, kotak dialog Kustomisasi memproses menu aplikasi dan membangun daftar tombol toolbar standar di setiap kategori menu. Untuk mempertahankan fungsionalitas yang diperluas yang disediakan oleh kontrol toolbar, Anda harus mengganti tombol toolbar standar dengan kontrol kustom dalam kotak dialog Kustomisasi .

Saat Anda mengaktifkan kustomisasi, Anda membuat kotak dialog Kustomisasi di handler OnViewCustomize kustomisasi dengan menggunakan kelas Kelas CMFCToolBarsCustomizeDialog. Sebelum Anda menampilkan kotak dialog Kustomisasi dengan memanggil CMFCToolBarsCustomizeDialog::Create, panggil CMFCToolBarsCustomizeDialog::ReplaceButton untuk mengganti tombol standar dengan kontrol baru.

Contoh: Membuat Kotak Kombo Temukan

Bagian ini menjelaskan cara membuat kontrol Temukan kotak kombo yang muncul pada toolbar dan berisi string pencarian yang digunakan baru-baru ini. Pengguna dapat mengetik string di kontrol lalu menekan tombol enter untuk mencari dokumen, atau menekan tombol escape untuk mengembalikan fokus ke bingkai utama. Contoh ini mengasumsikan bahwa dokumen ditampilkan dalam tampilan turunan Kelas CEditView.

Membuat Kontrol Temukan

Pertama, buat kontrol kotak kombo Temukan :

  1. Tambahkan tombol dan perintahnya ke sumber daya aplikasi:

    1. Di sumber daya aplikasi, tambahkan tombol baru dengan ID_EDIT_FIND ID perintah ke toolbar di aplikasi Anda dan ke bitmap apa pun yang terkait dengan toolbar.

    2. Buat item menu baru dengan ID_EDIT_FIND ID perintah.

    3. Tambahkan string baru "Temukan teks\nFind" ke tabel string dan tetapkan ID_EDIT_FIND_COMBO ID perintah. ID ini akan digunakan sebagai ID perintah tombol Temukan kotak kombo.

      Catatan

      Karena ID_EDIT_FIND adalah perintah standar yang diproses oleh CEditView, Anda tidak diharuskan untuk menerapkan handler khusus untuk perintah ini. Namun, Anda harus menerapkan handler untuk perintah ID_EDIT_FIND_COMBObaru .

  2. Buat kelas baru, CFindComboBox, berasal dari Kelas CComboBox.

  3. CFindComboBox Di kelas , ambil alih PreTranslateMessage metode virtual. Metode ini akan mengaktifkan kotak kombo untuk memproses pesan WM_KEYDOWN . Jika pengguna menekan kunci escape (VK_ESCAPE), kembalikan fokus ke jendela bingkai utama. Jika pengguna menekan tombol Enter (VK_ENTER), posting ke jendela bingkai utama pesan WM_COMMAND yang berisi ID_EDIT_FIND_COMBO ID perintah.

  4. Buat kelas untuk tombol Temukan kotak kombo, berasal dari KELAS CMFCToolBarComboBoxButton. Dalam contoh ini, itu bernama CFindComboButton.

  5. Konstruktor CMFCToolbarComboBoxButton mengambil tiga parameter: ID perintah tombol, indeks gambar tombol, dan gaya kotak kombo. Atur parameter ini sebagai berikut:

    1. Teruskan ID_EDIT_FIND_COMBO sebagai ID perintah.

    2. Gunakan CCommandManager::GetCmdImage dengan ID_EDIT_FIND untuk mendapatkan indeks gambar.

    3. Untuk daftar gaya kotak kombo yang tersedia, lihat Gaya Kotak Kombo.

  6. CFindComboButton Di kelas , ambil alih CMFCToolbarComboBoxButton::CreateCombo metode . Di sini Anda harus membuat CFindComboButton objek dan mengembalikan pointer ke objek tersebut.

  7. Gunakan makro IMPLEMENT_SERIAL untuk membuat tombol kombo tetap ada. Manajer ruang kerja secara otomatis memuat dan menyimpan status tombol di registri Windows.

  8. Terapkan ID_EDIT_FIND_COMBO handler dalam tampilan dokumen Anda. Gunakan CMFCToolBar::GetCommandButtons dengan ID_EDIT_FIND_COMBO untuk mengambil semua tombol Temukan kotak kombo. Mungkin ada beberapa salinan tombol dengan ID perintah yang sama karena kustomisasi.

  9. Di handler ID_EDIT_FINDOnFindpesan , gunakan CMFCToolBar::IsLastCommandFromButton untuk menentukan apakah perintah temukan dikirim dari tombol temukan kotak kombo. Jika demikian, temukan teks dan tambahkan string pencarian ke kotak kombo.

Menambahkan Temukan Kontrol ke Toolbar Utama

Untuk menambahkan tombol kotak kombo ke toolbar, ikuti langkah-langkah berikut:

  1. Terapkan handler AFX_WM_RESETTOOLBAROnToolbarReset pesan di jendela bingkai utama.

    Catatan

    Kerangka kerja mengirim pesan ini ke jendela bingkai utama ketika toolbar diinisialisasi selama pengaktifan aplikasi, atau ketika toolbar direset selama kustomisasi. Dalam kedua kasus tersebut, Anda harus mengganti tombol toolbar standar dengan tombol temukan kotak kombo kustom.

  2. Di handlerAFX_WM_RESETTOOLBAR, periksa ID toolbar, yaitu WPARAM dari pesan AFX_WM_RESETTOOLBAR. Jika ID toolbar sama dengan toolbar yang berisi tombol Temukan kotak kombo, panggil CMFCToolBar::ReplaceButton untuk mengganti tombol Temukan (yaitu, tombol dengan ID ID_EDIT_FIND) perintah dengan CFindComboButton objek.

    Catatan

    Anda dapat membuat CFindComboBox objek pada tumpukan, karena ReplaceButton menyalin objek tombol dan mempertahankan salinan.

Menambahkan Kontrol Temukan ke Kotak Dialog Kustomisasi

Di handler OnViewCustomizekustomisasi, panggil CMFCToolBarsCustomizeDialog::ReplaceButton untuk mengganti tombol Temukan (yaitu, tombol dengan ID ID_EDIT_FINDperintah ) dengan CFindComboButton objek.

Baca juga

Bagan Hierarki
Kelas
Kelas CMFCToolBar
Kelas CMFCToolBarButton
Kelas CMFCToolBarComboBoxButton
Kelas CMFCToolBarsCustomizeDialog