Bagikan melalui


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.

Dialog dengan tombol terpisah dan kontrol pager.

Hierarki Warisan

CObject

CCmdTarget

CWnd

CButton

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.

Dialog dengan tombol terpisah dan kontrol pager.

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);

Lihat juga

Kelas CSplitButton
Bagan Hierarki
Kelas CButton