在对话框模式下,怎样获取里面的工具栏和菜单栏里的指针?我想在其它类里使用对话框下的工具栏和菜单栏
并使工具栏其中的一个按钮为灰?   
并使菜单栏其中的一个按钮为灰?

解决方案 »

  1.   

    动态增加或删除菜单
    1、 增加菜单
    //添加
    CMenu *mainmenu; 
    mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单
    (mainmenu->GetSubMenu (0))->AppendMenu (MF_SEPARATOR);//添加分隔符
    (mainmenu->GetSubMenu (0))->AppendMenu(MF_STRING,ID_APP_ABOUT,_T("Always on &Top")); //添加新的菜单项
    DrawMenuBar(); //重画菜单2、 删除菜单
    //删除
    CMenu *mainmenu; 
    mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单
    CString str ;
    for(int i=(mainmenu->GetSubMenu (0))->GetMenuItemCount()-1;i>=0;i--) //取得菜单的项数。

        (mainmenu->GetSubMenu (0))->GetMenuString(i,str,MF_BYPOSITION); 
        //将指定菜单项的标签拷贝到指定的缓冲区。MF_BYPOSITION的解释见上。 
        if(str=="Always on &Top") //如果是刚才我们增加的菜单项,则删除。 
        { 
    (mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION); 
      break; 
        }
    }
      

  2.   

    获得状态栏与工具栏指针 
    CStatusBar * pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
    CToolBar * pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);
      

  3.   

    m_wndToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON_XX, FALSE);CMenu *pMenu = GetMenu();
    CMenu *pSubMenu = pMenu->GetSubMenu(0);
    pSubMenu->EnableMenuItem(ID_POPUP1, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
      

  4.   

    使菜单灰掉(
    CFrameWnd *)AfxGetMainWnd())->GetMenu()->EnableMenuItem(ID_ADDLIST,MF_GRAYED);//
    使菜单不可用
    (CFrameWnd *)AfxGetMainWnd())->GetMenu()->EnableMenuItem(ID_ADDLIST,MF_DISABLED);
    使菜单可用
    (CFrameWnd *)AfxGetMainWnd())->GetMenu()->EnableMenuItem(ID_ADDLIST,MF_ENABLED);
      

  5.   

    在对话框模式下,怎样获取里面的工具栏和菜单栏里的指针?
    对话框里面的工具栏?default是没有的啊.除非自己创建;既然自己创建,应该是自己保存指针的.
      

  6.   

    带工具条的dialog
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample/html/_sample_mfc_DLGCBR32.asp