点击工具栏的按钮时弹出菜单的问题(急)
问题生 2005-05-21 02:21:18 我想点击工具栏上的按钮的时候弹出一个菜单来,我整了1天半也没整出来,还望大家多多帮忙。
我开始时使用如下代码
void CMainFrame::OnChooseColor() //此函数为工具栏上的某按钮command事件
{
CMenu mnuTop;
mnuTop.LoadMenu( IDR_MENU1 ); //装入菜单资源,此菜单已经制作好
CMenu* pPopup = mnuTop.GetSubMenu( 0 ); //得到第一个菜单项的指针//就这里错误的不到指针
ASSERT_VALID( pPopup ); //pPopup的值为零
CRect rc;
int nIndex = m_wndToolBar.CommandToIndex(ID_MENU_BAR );//得到按钮的索引
ASSERT( nIndex >= 0 );
m_wndToolBar.GetItemRect( nIndex, &rc );
m_wndToolBar.ClientToScreen( &rc );
pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON,
rc.left, rc.bottom,
this, NULL );
}
后来我改了一下
CMenu * mnuTop;
mnuTop = new CMenu;
mnuTop->LoadMenu( IDR_TEST );
CMenu* pPopup = mnuTop->GetSubMenu( 0 );//得到第一个菜单项的指针//还是这里的错误的不到指针
ASSERT_VALID( pPopup ); //这是纳闷阿
CRect rc;
int nIndex = m_wndToolBar.CommandToIndex(ID_TEST);
ASSERT( nIndex >= 0 );
m_wndToolBar.GetItemRect( nIndex, &rc );
m_wndToolBar.ClientToScreen( &rc );
pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON,rc.left, rc.bottom,
this, NULL );//显示弹出式菜单
现在我是痛不欲生,还望大家多帮忙