Bilah Alat Docking dan Mengambang
Pustaka Kelas Microsoft Foundation mendukung toolbar yang dapat di-dock. Toolbar yang dapat ditambatkan dapat dilampirkan, atau ditambatkan, ke sisi mana pun dari jendela induknya, atau dapat dilepaskan, atau diambang, di jendela bingkai mininya sendiri. Artikel ini menjelaskan cara menggunakan toolbar yang dapat di-dock di aplikasi Anda.
Jika Anda menggunakan Panduan Aplikasi untuk menghasilkan kerangka aplikasi Anda, Anda diminta untuk memilih apakah Anda ingin toolbar yang dapat di-dock. Secara default, Application Wizard menghasilkan kode yang melakukan tiga tindakan yang diperlukan untuk menempatkan toolbar yang dapat di-dock di aplikasi Anda:
Aktifkan docking di jendela bingkai.
Jika salah satu langkah ini hilang, aplikasi Anda akan menampilkan toolbar standar. Dua langkah terakhir harus dilakukan untuk setiap toolbar yang dapat di-dock di aplikasi Anda.
Topik lain yang dibahas dalam artikel ini meliputi:
Lihat contoh Umum MFC DOCKTOOL misalnya.
Mengaktifkan Docking di Jendela Bingkai
Untuk menambungkan toolbar ke jendela bingkai, jendela bingkai (atau tujuan) harus diaktifkan untuk mengizinkan docking. Ini dilakukan menggunakan fungsi CFrameWnd::EnableDocking , yang mengambil satu parameter DWORD yang merupakan sekumpulan bit gaya yang menunjukkan sisi jendela bingkai mana yang menerima docking. Jika toolbar akan ditampung dan ada beberapa sisi yang dapat ditampar, sisi yang ditunjukkan dalam parameter yang diteruskan digunakan EnableDocking
dalam urutan berikut: atas, bawah, kiri, kanan. Jika Anda ingin dapat menambungkan bilah kontrol di mana saja, teruskan CBRS_ALIGN_ANY ke EnableDocking
.
Mengaktifkan Docking untuk Toolbar
Setelah menyiapkan tujuan untuk docking, Anda harus menyiapkan toolbar (atau sumber) dengan cara yang sama. Panggil CControlBar::EnableDocking untuk setiap toolbar yang ingin Anda dock, menentukan sisi tujuan tempat toolbar harus menambatkan. Jika tidak ada sisi yang ditentukan dalam panggilan untuk CControlBar::EnableDocking
mencocokkan sisi yang diaktifkan untuk penambatan di jendela bingkai, toolbar tidak dapat menambatkan — itu akan mengambang. Setelah mengambang, itu tetap toolbar mengambang, tidak dapat merapat ke jendela bingkai.
Jika efek yang Anda inginkan adalah toolbar mengambang secara permanen, panggil EnableDocking
dengan parameter 0. Kemudian panggil CFrameWnd::FloatControlBar. Toolbar tetap mengambang, secara permanen tidak dapat merapat ke mana pun.
Menambah Bilah Alat
Kerangka kerja memanggil CFrameWnd::D ockControlBar ketika pengguna mencoba untuk menghilangkan toolbar di sisi jendela bingkai yang memungkinkan docking.
Selain itu, Anda dapat memanggil fungsi ini kapan saja untuk menambatkan bilah kontrol ke jendela bingkai. Ini biasanya dilakukan selama inisialisasi. Lebih dari satu toolbar dapat ditambatkan ke sisi tertentu dari jendela bingkai.
Mengambangkan Bilah Alat
Melepas bilah alat yang dapat di-dok dari jendela bingkai disebut mengambangkan bilah alat. Panggil CFrameWnd::FloatControlBar untuk melakukan ini. Tentukan bilah alat yang akan diambang, titik tempatnya harus ditempatkan, dan gaya perataan yang menentukan apakah bilah alat mengambang adalah horizontal atau vertikal.
Kerangka kerja memanggil fungsi ini ketika pengguna menyeret toolbar dari lokasi yang ditambatkan dan meletakkannya di lokasi di mana docking tidak diaktifkan. Ini dapat berada di mana saja di dalam atau di luar jendela bingkai. DockControlBar
Seperti halnya , Anda juga dapat memanggil fungsi ini selama inisialisasi.
Implementasi MFC toolbar yang dapat di-dock tidak menyediakan beberapa fitur yang diperluas yang ditemukan di beberapa aplikasi yang mendukung toolbar yang dapat di-dock. Fitur seperti toolbar yang dapat disesuaikan tidak disediakan.
Mengubah Ukuran Toolbar secara Dinamis
Pada Visual C++ versi 4.0, Anda dapat memungkinkan pengguna aplikasi Anda untuk mengubah ukuran toolbar mengambang secara dinamis. Biasanya, toolbar memiliki bentuk linier yang panjang, ditampilkan secara horizontal. Tetapi Anda dapat mengubah orientasi toolbar dan bentuknya. Misalnya, ketika pengguna menambungkan toolbar terhadap salah satu sisi vertikal jendela bingkai, bentuk berubah menjadi tata letak vertikal. Dimungkinkan juga untuk membentuk ulang toolbar menjadi persegi panjang dengan beberapa baris tombol.
Anda dapat:
Tentukan ukuran dinamis sebagai karakteristik toolbar.
Tentukan ukuran tetap sebagai karakteristik bilah alat.
Untuk memberikan dukungan ini, ada dua gaya toolbar baru untuk digunakan dalam panggilan Anda ke fungsi CToolBar::Create member. Yaitu:
CBRS_SIZE_DYNAMIC Control bar bersifat dinamis.
CBRS_SIZE_FIXED Bilah kontrol diperbaiki.
Gaya dinamis ukuran memungkinkan pengguna Anda mengubah ukuran toolbar saat mengambang, tetapi tidak saat di-dock. Toolbar "membungkus" jika perlu mengubah bentuk saat pengguna menyeret tepinya.
Ukuran gaya tetap mempertahankan status pembungkusan toolbar, memperbaiki posisi tombol di setiap kolom. Pengguna aplikasi Anda tidak dapat mengubah bentuk toolbar. Toolbar membungkus di tempat yang ditentukan, seperti lokasi pemisah di antara tombol. Ini mempertahankan bentuk ini apakah bilah alat ditampung atau mengambang. Efeknya adalah palet tetap dengan beberapa kolom tombol.
Anda juga dapat menggunakan CToolBar::GetButtonStyle untuk mengembalikan status dan gaya tombol pada toolbar Anda. Gaya tombol menentukan bagaimana tombol muncul dan bagaimana tombol merespons input pengguna; status memberi tahu apakah tombol dalam keadaan dibungkus.
Mengatur Posisi Bungkus untuk Toolbar Gaya Tetap
Untuk toolbar dengan gaya tetap ukuran, tentukan indeks tombol toolbar tempat toolbar akan dibungkus. Kode berikut menunjukkan cara melakukan ini di penimpaan OnCreate
jendela bingkai utama Anda:
// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);
// Do the same for other wrap locations ...
// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
// Call docking/floating functions as needed ...
Sampel Umum MFC DOCKTOOL menunjukkan cara menggunakan fungsi anggota kelas CControlBar dan CToolBar untuk mengelola tata letak dinamis toolbar. Lihat EDITBAR file. CPP di DOCKTOOL.