本人接触MFC不久。最近手上有一个基于对话框的工程。。想添加一个功能,就是像类似于ResourceView里面的工具条那种形式是浮在窗口上方,然后能拖动的一个类似的工具条的形式在那个上面还需要用到下拉菜单或者是子菜单的形式网上的一些资料也看了。。但是还是觉得不是很明白。。所以在请教各位大神。。希望大神们给点思路或者是建议。。谢谢

解决方案 »

  1.   

    假设你的对话框类为CDialogDemo;
    然后再新建一个类如CManualCtrl,使它继承CDockablePane,在新建的这个类头文件(.h)定义对话框类的对象CDialogDemo m_ManualCtrlPane;
    同时在新建的这个类的源文件(.cpp)的OnCreate()函数中添加以下代码
    if(!m_ManualCtrlPane.Create(IDD_DIALOG_MANUALCTRL,this))  //IDD_DIALOG_ManualCtrl是你需要浮动对话框的ID
    {
    TRACE0("fail to create manualpane\n");
    return -1;
    }
    要特别注意的是你的浮动对话框属性设置Style一定要设置为child,应该够清楚了吧。
      

  2.   

    您好!我试了下您的方法。。但是还有几个疑问:基于对话框的工程中的CDockablePane类我好想没有找到??还有就是我新建了一个对话框的话。。这个浮动的对话框该怎么显示出来呢?那个if语句好像是创建作用的吧。。不好意思。。本人刚接触MFC,可能问题比较菜还请大侠耐心指导...谢谢!!
      

  3.   

    CDockablePane类不是基于对话框的,你直接在左边的类视图框架中在你的工程名称上点右键添加类,选择基类为CDockablePane,所以不需要你再新建一个对话框,if语句创建的那个才是浮动对话框。
      

  4.   

    我按照您的方法试了,在添加新类的选择中还是没有CDockablePane这个类。。是不是基于对话框的工程是不支持这个类的????
      

  5.   

    你可以给你新类任取一个名,在基类中选择CDockablePane这个类
    记住不是要你在对话框上点右键添加,对话框的基类选择CDialog就可以了
    而是在你的类视图里面工程名上点右键添加类,给你的新类输入个类名,然后在基类中选择CDockablePane
    注:我是用的VS2008没问题,照理来说VC6.0应该也是可以的。