www.pudn.com > source.rar > DropDownToolBar.cpp


// DropDownToolBar.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "flashnow.h" 
#include "DropDownToolBar.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CDropDownToolBar 
 
CDropDownToolBar::CDropDownToolBar() 
{ 
	p_MenuID=NULL; 
} 
 
CDropDownToolBar::~CDropDownToolBar() 
{ 
	if(p_MenuID) 
		delete [] p_MenuID; 
} 
 
 
BEGIN_MESSAGE_MAP(CDropDownToolBar, CToolBar) 
	//{{AFX_MSG_MAP(CDropDownToolBar) 
		// NOTE - the ClassWizard will add and remove mapping macros here. 
	//}}AFX_MSG_MAP 
	ON_NOTIFY_REFLECT(TBN_DROPDOWN,OnDropDown) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CDropDownToolBar message handlers 
 
BOOL CDropDownToolBar::LoadToolBar(UINT nID) 
{ 
	if(!CToolBar::LoadToolBar(nID)) 
			return FALSE; 
	p_MenuID=new UINT [GetCount()]; 
	for(int i=0;iiItem); 
	*result=TBDDRET_DEFAULT; 
} 
 
void CDropDownToolBar::OnDropDownButton(UINT nID) 
{ 
	int pos=CommandToIndex(nID); 
	if(!p_MenuID[pos]) 
		return; 
 
	CRect rect; 
	GetItemRect(pos,&rect); 
	ClientToScreen(&rect); 
	 
	CMenu Menu; 
	Menu.LoadMenu(p_MenuID[pos]); 
	CMenu* pMenu = Menu.GetSubMenu(0); 
	pMenu->TrackPopupMenu(TPM_RIGHTBUTTON, rect.left, rect.bottom, this); 
}