15,979
社区成员
发帖
与我相关
我的任务
分享
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_NOTIFY(TBN_DROPDOWN,AFX_IDW_TOOLBAR,OnToolBarDropDown)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//.......省略....
//效应下拉按钮消息
void CMainFrame::OnToolBarDropDown(NMTOOLBAR* pnmtb, LRESULT* plRes)
{
int nMenuItem ;
int nSubMenuItem ;
CRect rcBtn ;
UINT nID;
CWnd * pWnd;
pWnd = NULL ;
pWnd = &m_wndToolBar;
nID = IDR_GRAPHITYPE;
pWnd->SendMessage(TB_GETRECT, pnmtb->iItem, (LPARAM)&rcBtn);
pWnd->ClientToScreen(&rcBtn);
// 根据下拉按钮id的不同,做不同的处理
switch (pnmtb->iItem)
{
case IDM_DELETE:
nMenuItem = 1 ; //加载一层菜单----"编辑"
nSubMenuItem = 2 ; //加载二层菜单---- "删除"
break;
case ID_FILL_COLOR: //显示调色板
new CColorPopUp(CPoint(rcBtn.left,rcBtn.bottom ), GetColor() , this , _T("自定义颜色(&C)..."));
default:
return;
}
// 加载弹出菜单
CMenu menu;
menu.LoadMenu(nID);
CMenu * pSysMenu = menu.GetSubMenu(nMenuItem);
if(pSysMenu == NULL) return ;
CMenu * pSubMenu = pSysMenu->GetSubMenu(nSubMenuItem);
ASSERT(pSubMenu != NULL);
if(pSubMenu == NULL) return ;
pSubMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,
rcBtn.left, rcBtn.bottom, this, &rcBtn);
}
/