我将菜单放入对话框中,而对话框要求是 child 型的,不知如何才能办到,我试了用 setmenu,但是报错,在对话框资源中也不能更改 style,改后就没有菜单了

解决方案 »

  1.   

    对话框类中声明
    CMenu* pNewMenu;OnInitDialog()中
    pNewMenu=new CMenu;
    pNewMenu->LoadMenu(IDR_MYMENU);
    SetMenu(pNewMenu);OnClose()中
    pNewMenu->Detach();不知道好使不,试试吧
      

  2.   

    子窗口没有办法加上menu的,别费心了!
    还是把你的对话框改正为自定义的、popup类型的就可以了加上了
      

  3.   

    我主要是想将菜单放到工具栏中,设想将菜单先放到对话框中,再将对话框放入 rebar 中,但是 rebar 要求对话框是 child 的,所以有这个难题,大家再帮我想想^-^
      

  4.   

    我想可以用弹出菜单实现你的效果,在某个工具按钮的相应函数里加上 CMenu menu;
    menu.LoadMenu(nID);
    CMenu* pPopup = menu.GetSubMenu(0);
    ASSERT(pPopup);

    CRect rc;
    //下面这两句话为得到菜单显示的位置,根据需要改变
             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);
      

  5.   

    谢谢大罗,你的意思我懂了,不过那样得话每个菜单按钮必须自行设置,我主要是想作成想 IE 那样风格的菜单,在IE中,她的菜单风格是和 window 统一的,而不是画出来的
      

  6.   

    你是想在Dialog中显示菜单条,就像一般的窗口一样,是吗?如果是,很简单
    CMenu* pNewMenu;
    pNewMenu=new CMenu;
    pNewMenu->LoadMenu(IDR_MENU1);
    SetMenu(pNewMenu);
    将上面的代码加入OnInitDialog()中,一定行!IDR_MENU1是自己加入的菜单资源。
    如果不是,就不知到你在说什么了?
      

  7.   

    田野,你说得是可以的,但是我的意思不是这个
    IE 你用过的吧(废话),就象它的菜单一样,你说得 dialog 必须是 非child 型的,不然是无法设置的