我要做一个程序,因为程序运行的界面象一个带有菜单栏和工具栏的对话框。想问问对话框能不能加菜单栏和工具栏?如果不能,或者想在单文档的工作区显示一个类似对话框的东西,该怎么办呢?谢谢!!以前也问过,但是没人解答,拜托了。

解决方案 »

  1.   

    对话框 可以添加 菜单栏 
    只是不能简单用消息映射(UPDATE_COMMAND_UI)来处理界面问题(比如加一个小勾什么的)
     得加一点东西才行~
      

  2.   

    为什么不用基于FormView的SDI做框架呢,你所说的“单文档的工作区显示一个类似对话框的东西”就是Formview
    如果你还想要对话框上加菜单和工具条,
    看此文:http://www.vckbase.com/document/viewdoc/?id=265
    或许对你有帮助
      

  3.   

    http://blog.vckbase.com/flyingleaf/archive/2004/12/22/2234.html
      

  4.   

    谢谢二位的解答!程序的运行结果是在编辑区显示一些信息,有很多表格控件,和别的一些控件;编辑区不做输入用。菜单栏和工具栏则用做弹出一些对话框,做设置参数用。
    因为刚学vc,会用的东西很少。SDI也不会。你说的网址正在看,正是需要的,我先看看,谢谢!
      

  5.   

    可以,只要在对话框和工具条类中重载两个函数就行// TOOLBAR要重载的函数
    LRESULT CDlgToolBar::OnIdleUpdateCmdUI(WPARAM wParam, LPARAM)
    {
    if (IsWindowVisible())
    {
    CFrameWnd *pParent = (CFrameWnd *)GetParent();
    if (pParent)
    OnUpdateCmdUI(pParent, (BOOL)wParam);
    }
    return 0L;
    }// 对话框要重载的函数
    LRESULT CIdleDialog::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    SendMessageToDescendants(WM_IDLEUPDATECMDUI,
    (WPARAM)TRUE, 0, TRUE, TRUE); return CDialog::WindowProc(message, wParam, lParam);
    }
      

  6.   

    只要添加上面两个函数,程序就可以用消息映射(UPDATE_COMMAND_UI)来处理界面问题(比如加一个小勾什么的)了
      

  7.   

    对话框 可以添加 菜单栏,工具栏想在单文档的工作区显示一个类似对话框的东西可以选择继承 CFormView
      

  8.   

    看这里的例子:
    http://www.vckbase.com/document/viewdoc/?id=265
      

  9.   

    jmlt1983(Harper),xkit(喝口汤先)你们说的继承CFormView这个方法,具体怎么办呢?是不是建立文当时,在选择基类时选CFormView。麻烦说的详细些,谢谢!
      

  10.   

    建立文当时,在选择基类时选CFormView改的话,基类改为CFormView,在插入资源dialog->IDD_FORMVIEW,在从CFormView继承的类的声明中加入enmu{IDD=abc}(abc为IDD_FORMVIEW的ID),和构造函数;
    如:
    class CMyformView : public CFormView
    {
    ...
    public:
    enum { IDD = IDD_FORM };
    ...
    };
    CMyformView::CMyformView():CFormView(CMusicListView::IDD)
    {
    ...
    }
      

  11.   

    还要改消息映射,IMPLEMENT_DYNCREATE()
      

  12.   

    谢谢,继承以后基本满足要求,至于功能我还在编不太清楚,估计问题还不断有。上面老兄说得加入enmu{IDD=abc}是为什么,有什么作用,必须吗?
      

  13.   

    指的是文档生成后,要改成从CFormView继承话(比如说原先的基类是CView),这样改只是把原来从其它的View类继承来的类改成和建立工程时选择继承CFormView的类一样
    enmu{IDD=abc}是 插入资源dialog->IDD_FORMVIEW 所插入的IDD_FORMVIEW的 ID ,应该是与view进行关联,显示时就显示与该ID对应的IDD_FORMVIEW