下拉箭头的响应函数:
   
CWnd *pWnd;
    UINT nID;

    // Switch on button command id's.
CRect rc;
CMenu menu; 
CMenu* pPopup;
    switch (pnmtb->iItem)
    {
case IDT_RE:
pWnd = &m_wndtoolbar;
nID  = IDR_MENU1;
// load and display popup menu
menu.LoadMenu(nID);
if (menu.GetSubMenu(8) != NULL)  //获得菜单的第9项
{
pPopup = menu.GetSubMenu(8);
ASSERT(pPopup);    
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);
}
break;
   } 为什么我在第9项动态添加项时,工具栏的下拉箭头却没有更新?

解决方案 »

  1.   

    响应函数是直接从id那里获取的menu,你是在哪里动态添加的???
      

  2.   


    proPath[i] = rString;
    GetMenu()->GetSubMenu(8)->AppendMenu(MF_STRING,300+i,rString);
    Where = rString.ReverseFind('\\'); 
    if (Where == -1)  
    Where = rString.ReverseFind('/');
    rString = rString.Right(rString.GetLength() - 1 - Where) +".wtp";   //取得文件名
    temp.Format("%d.",i+1);
    rString = temp + rString;
    GetMenu()->GetSubMenu(0)->InsertMenu(ID_FILE_EXIT,MF_BYCOMMAND | MF_STRING,200+i,rString);初始化这里
      

  3.   

    GetMenu()->GetSubMenu(8)->AppendMenu(MF_STRING,300+i,rString);
      

  4.   

    1.有无设置工具栏下拉的风格?SetExtendedStylem_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);2.设置TBSTYLE_DROPDOWN风格,
    tbi.dwMask= TBIF_STYLE;
    tbi.cbSize= sizeof(TBBUTTONINFO);
    m_wndToolBar.GetToolBarCtrl().GetButtonInfo(ID_EDIT_CUT, &tbi);
    tbi.fsStyle |= TBSTYLE_DROPDOWN;
    m_wndToolBar.GetToolBarCtrl().SetButtonInfo(ID_EDIT_CUT, &tbi);
    3.请查看msdn的帮助:TBSTYLE_EX_DRAWDDARROWS