Bir Araç Çubuğu Denetiminde Açılır Düğmeler Kullanma
Standart basma düğmelerine ek olarak, araç çubuğunda açılan düğmeler de bulunabilir. Açılan düğme genellikle ekli bir aşağı okun varlığıyla gösterilir.
Dekont
Eklenen aşağı ok yalnızca TBSTYLE_EX_DRAWDDARROWS genişletilmiş stil ayarlanmışsa görünür.
Kullanıcı bu oka (veya ok yoksa düğmenin kendisine) tıkladığında, araç çubuğu denetiminin üst öğesine bir TBN_DROPDOWN bildirim iletisi gönderilir. Ardından bu bildirimi işleyebilir ve bir açılır menü görüntüleyebilirsiniz; Internet Explorer'ın davranışına benzer.
Aşağıdaki yordamda açılır menü içeren bir açılan araç çubuğu düğmesinin nasıl uygulandığı gösterilmektedir:
Açılan düğme uygulamak için
Nesneniz
CToolBarCtrl
oluşturulduktan sonra aşağıdaki kodu kullanarak TBSTYLE_EX_DRAWDDARROWS stilini ayarlayın:m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
Açılan düğmeler olacak yeni (InsertButton veya AddButtons) veya mevcut (SetButtonInfo) düğmeleri için TBSTYLE_DROPDOWN stilini ayarlayın. Aşağıdaki örnekte, nesnedeki mevcut bir düğmenin
CToolBarCtrl
değiştirilmesi gösterilmektedir:TBBUTTONINFO tbi; tbi.dwMask = TBIF_STYLE; tbi.cbSize = sizeof(TBBUTTONINFO); m_ToolBarCtrl.GetButtonInfo(0, &tbi); tbi.fsStyle |= TBSTYLE_DROPDOWN; m_ToolBarCtrl.SetButtonInfo(0, &tbi);
Araç çubuğu nesnesinin üst sınıfına bir TBN_DROPDOWN işleyicisi ekleyin.
ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
Yeni işleyicide uygun açılır menüyü görüntüleyin. Aşağıdaki kodda bir yöntem gösterilmektedir:
void CMyDialog::OnTbnDropDownToolBar1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTOOLBAR pToolBar = reinterpret_cast<LPNMTOOLBAR>(pNMHDR); ClientToScreen(&(pToolBar->rcButton)); // TrackPopupMenu uses screen coords CMenu menu; VERIFY(menu.LoadMenu(IDR_MENU1)); CMenu *pPopup = menu.GetSubMenu(0); if (NULL != pPopup) { pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pToolBar->rcButton.left, pToolBar->rcButton.bottom, this); } *pResult = 0; }