本文共 1521 字,大约阅读时间需要 5 分钟。
1. 首先在CMainFrame::OnCreate 函数下添加如下代码,让工具栏有下拉能力和向下的箭头按钮;
// 让工具栏具有处理下拉箭头的能力 DWORD dwExStyle = TBSTYLE_EX_DRAWDDARROWS; m_wndToolBar.GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE, 0, (LPARAM)dwExStyle);// 选定的地方添加下拉箭头按钮,其中ID_SOUCANG为对应的工具栏按钮ID DWORD dwStyle = m_wndToolBar.GetButtonStyle(m_wndToolBar.CommandToIndex(ID_SOUCANG)); dwStyle |= TBSTYLE_DROPDOWN;m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex(ID_SOUCANG),dwStyle);
注:需要加下拉菜单的按钮必须一直保持可用状态,这个可以将按钮关联到某个菜单中,也可以给按钮添加UPDATE_COMMOND_UI函数,并添加一下代码:
void CMainFrame::OnUpdateSoucang(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->Enable(TRUE); }
2. 在MainFrame.cpp中添加:
ON_NOTIFY(TBN_DROPDOWN,AFX_IDW_TOOLBAR, OnToolbarDropDown)在MainFrame.h中分别添加:
afx_msg voidOnToolbarDropDown(NMTOOLBAR* pnmh, LRESULT* plRes);
其函数体代码如下:
void OnToolbarDropDown(NMTOOLBAR* pnmh, LRESULT* plRes){ CWnd *pWnd; UINT nID; switch(pnmtb->iItem) { case ID_SOUCANG: pWnd = &m_wndToolBar; nID = IDR_MAINFRAME; break; default: return; } // load and display popup menu CMenu menu; menu.LoadMenu(nID); CMenu* pPopup = menu.GetSubMenu(3); ASSERT(pPopup); CRect rc; pWnd->SendMessage(TB_GETRECT, pnmtb->iItem,(LPARAM)&rc); pWnd->ClientToScreen(&rc); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL, rc.left, rc.bottom, this, &rc);}
转载地址:http://cxtsi.baihongyu.com/