Kelas CSplitButton
Kelas CSplitButton
mewakili kontrol tombol terpisah. Kontrol tombol terpisah melakukan perilaku default saat pengguna mengklik bagian utama tombol, dan menampilkan menu drop-down saat pengguna mengklik panah drop-down tombol.
Sintaks
class CSplitButton : public CButton
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CSplitButton::CSplitButton | Membuat CSplitButton objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CSplitButton::Create | Membuat kontrol tombol terpisah dengan gaya tertentu dan melampirkannya ke objek saat ini CSplitButton . |
CSplitButton::SetDropDownMenu | Mengatur menu drop-down yang ditampilkan saat pengguna mengklik panah drop-down kontrol tombol pisahkan saat ini. |
Metode yang Dilindungi
Nama | Deskripsi |
---|---|
CSplitButton::OnDropDown | Menangani pemberitahuan BCN_DROPDOWN yang dikirim sistem saat pengguna mengklik panah drop-down kontrol tombol pisahkan saat ini. |
Keterangan
Kelas CSplitButton
ini berasal dari kelas CButton . Kontrol tombol terpisah adalah kontrol tombol yang gayanya BS_SPLITBUTTON. Ini menampilkan menu kustom saat pengguna mengklik panah drop-down. Untuk informasi selengkapnya, lihat gaya BS_SPLITBUTTON dan BS_DEFSPLITBUTTON di Gaya Tombol.
Gambar berikut menggambarkan kotak dialog yang berisi kontrol pager dan kontrol tombol pemisah (1). Panah drop-down (2) telah diklik dan submenu (3) ditampilkan.
Hierarki Warisan
CSplitButton
Persyaratan
Header: afxcmn.h
Kelas ini didukung di Windows Vista dan yang lebih baru.
Persyaratan tambahan untuk kelas ini dijelaskan dalam Persyaratan Build untuk Kontrol Umum Windows Vista.
CSplitButton::Create
Membuat kontrol tombol terpisah dengan gaya tertentu dan melampirkannya ke objek saat ini CSplitButton
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwStyle
[di] Kombinasi bitwise (OR) gaya yang akan diterapkan ke kontrol. Untuk informasi selengkapnya, lihat Gaya Tombol.
rect
[di] Referensi ke struktur RECT yang berisi posisi dan ukuran kontrol.
pParentWnd
[di] Penunjuk non-null ke objek CWnd yang merupakan jendela induk kontrol.
Nid
[di] ID kontrol.
Tampilkan Nilai
TRUE jika metode ini berhasil; jika tidak, FALSE.
CSplitButton::CSplitButton
Membuat CSplitButton
objek. Parameter konstruktor menentukan submenu yang ditampilkan saat pengguna mengklik panah drop-down kontrol tombol pisahkan.
CSplitButton();
CSplitButton(
UINT nMenuId,
UINT nSubMenuId)
CSplitButton(CMenu* pMenu)
Parameter
nMenuId
[di] ID sumber daya bilah menu.
nSubMenuId
[di] ID sumber daya submenu.
pMenu
[di] Penunjuk ke objek CMenu yang menentukan submenu. Objek CSplitButton
menghapus CMenu
objek dan HMENU terkait ketika CSplitButton
objek keluar dari cakupan.
Keterangan
Gunakan metode CSplitButton::Create untuk membuat kontrol tombol terpisah dan melampirkannya ke CSplitButton
objek.
CSplitButton::OnDropDown
Menangani pemberitahuan BCN_DROPDOWN yang dikirim sistem saat pengguna mengklik panah drop-down kontrol tombol pisahkan saat ini.
afx_msg void OnDropDown(
NMHDR* pNMHDR,
LRESULT* pResult);
Parameter
pNMHDR
[di] Penunjuk ke struktur NMHDR yang berisi informasi tentang pemberitahuan BCN_DROPDOWN .
pResult
[out] (Tidak digunakan; tidak ada nilai yang dikembalikan.) Mengembalikan nilai pemberitahuan BCN_DROPDOWN .
Keterangan
Saat pengguna mengklik panah drop-down pada kontrol tombol terpisah, sistem mengirim pesan pemberitahuan BCN_DROPDOWN, yang ditangani OnDropDown
metode. Namun, CSplitButton
objek tidak meneruskan pemberitahuan BCN_DROPDOWN ke kontrol yang berisi kontrol tombol terpisah. Akibatnya, kontrol yang berisi tidak dapat mendukung tindakan kustom sebagai respons terhadap pemberitahuan.
Untuk menerapkan tindakan kustom yang didukung kontrol yang berisi, gunakan objek CButton dengan gaya BS_SPLITBUTTON alih-alih CSplitButton
objek. Kemudian terapkan handler untuk pemberitahuan BCN_DROPDOWN di CButton
objek. Untuk informasi selengkapnya, lihat Gaya Tombol.
Untuk menerapkan tindakan kustom yang didukung oleh kontrol tombol terpisah itu sendiri, gunakan pantulan pesan. Dapatkan kelas Anda sendiri dari CSplitButton
kelas dan beri nama, misalnya, CMySplitButton. Kemudian tambahkan peta pesan berikut ke aplikasi Anda untuk menangani pemberitahuan BCN_DROPDOWN:
BEGIN_MESSAGE_MAP(CMySplitButton,
CSplitButton)
ON_NOTIFY_REFLECT(BCN_DROPDOWN, &CMySplitButton::OnDropDown)
END_MESSAGE_MAP()
CSplitButton::SetDropDownMenu
Mengatur menu drop-down yang ditampilkan saat pengguna mengklik panah drop-down kontrol tombol pisahkan saat ini.
void SetDropDownMenu(
UINT nMenuId,
UINT nSubMenuId);
void SetDropDownMenu(CMenu* pMenu);
Parameter
nMenuId
[di] ID sumber daya bilah menu.
nSubMenuId
[di] ID sumber daya submenu.
pMenu
[di] Penunjuk ke objek CMenu yang menentukan submenu. Objek CSplitButton
menghapus CMenu
objek dan HMENU terkait ketika CSplitButton
objek keluar dari cakupan.
Keterangan
Parameter nMenuId mengidentifikasi bilah menu, yang merupakan daftar horizontal item bilah menu. Parameter nSubMenuId adalah nomor indeks berbasis nol yang mengidentifikasi submenu, yang merupakan daftar drop-down item menu yang terkait dengan setiap item bilah menu. Misalnya, aplikasi umum memiliki menu yang berisi item bilah menu, "File," "Edit," dan "Bantuan." Item bilah menu "File" memiliki submenu yang berisi item menu, "Buka," "Tutup" dan "Keluar." Saat panah drop-down kontrol tombol terpisah diklik, kontrol menampilkan submenu yang ditentukan, bukan bilah menu.
Gambar berikut menggambarkan kotak dialog yang berisi kontrol pager dan kontrol tombol pemisah (1). Panah drop-down (2) telah diklik dan submenu (3) ditampilkan.
Contoh
Pernyataan pertama dalam contoh kode berikut menunjukkan metode CSplitButton::SetDropDownMenu . Kami membuat menu dengan editor sumber daya Visual Studio, yang secara otomatis menamai ID bilah menu, IDR_MENU1. Parameter nSubMenuId , yaitu nol, mengacu pada satu-satunya submenu bilah menu.
// Initialize the dropdown menu of the splitbutton control.
m_splitButton.SetDropDownMenu(IDR_MENU1, 0);
// Create the pager control.
BOOL nRet;
CRect rect;
GetClientRect(&rect);
nRet = m_pager.Create(
(WS_VISIBLE | WS_CHILD | PGS_HORZ),
CRect(rect.Width() / 4, 5, (rect.Width() * 3) / 4, 55),
this,
IDC_PAGER1);
m_pager.GetClientRect(&rect);
nRet = m_button.Create(
_T("This is a very, very long button. 012345678901234567890"),
(WS_VISIBLE | WS_CHILD), // Do not use CCS_NORESIZE.
CRect(0, 0, rect.Width(), 30),
&m_pager, IDC_BUTTON1);
m_pager.SetChild(m_button.m_hWnd);
m_pager.SetButtonSize(20);
m_pager.SetBorder(1);