头文件中加入
afx_msg void OnDropDown(NMHDR* pNotifyStruct, LRESULT*pResult);
BEGIN_MESSAGE_MAP(CDlgFileShare, CDialog)
//{{AFX_MSG_MAP(CDlgFileShare)
ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnDropDown) //用于下拉菜单
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
int CDlgFileShare::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_BASIC_OPERATE))
{
TRACE0("Failed to create toolbar/n");
return -1; // fail to create
}
CRect rcClientNew;
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,
AFX_IDW_CONTROLBAR_LAST,
0,
reposQuery,
rcClientNew);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
//加载菜单
int nRet = m_mainMenu.LoadMenu(IDR_NET_DISK);
if ( 0 == nRet)
{
MessageBox("加载菜单出错","网络硬盘",MB_OK|MB_ICONINFORMATION);
return 0;
}
//设置点击查看下拉菜单
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50, 150);
m_wndToolBar.ModifyStyle(0,TBSTYLE_FLAT|TBSTYLE_TRANSPARENT);
m_wndToolBar.SetButtonInfo(6,IDT_VIEW ,TBSTYLE_BUTTON|TBSTYLE_DROPDOWN ,6);
return 0;
}
显示下拉菜单//响应工具栏上按钮事件
void CDlgFileShare::OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult)
{
NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNotifyStruct;
CRect rect;
m_wndToolBar.GetToolBarCtrl().GetRect(pNMToolBar->iItem, &rect);
rect.top = rect.bottom;
::ClientToScreen(pNMToolBar->hdr.hwndFrom, &rect.TopLeft());
//查看下拉菜单
if(pNMToolBar->iItem == IDT_VIEW)
{
CMenu menu;
CMenu* pPopup;
menu.LoadMenu(IDR_NET_DISK);
pPopup = menu.GetSubMenu(4);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, rect.left, rect.top + 1, this );
}
}