VS2010/MFC Ribbon风格创建DockablePane

基本思路:

第一步:先创建一个MFC的类,继承自CDockablePane。

第二步:给该类添加WM_CREATE、WM_SIZE消息处理函数。

第三步:创建一个对话框资源,并关联一个类。

第四步:在新的Pane类的WM_CREATE消息处理函数中添加创建上面对话框的代码;

                同时在新的Pane类的WM_SIZE消息处理函数中添加上述创建的对话框位置的代码;

第五步:在项目的框架类的OnCreate函数中创建panel对象,并使之可停靠。



具体实现如下:

1.新建一个MFC应用程序,命名为TestDockablePane,类型是SDI或者MDI:


2.创建继承自CDockablePane的类CMyPane:

3.给类CMyPane添加WM_CREATE、WM_SIZE消息处理函数。


4.创建一个想放入悬浮框的对话框资源IDD_DIALOG_DOCKDLG,style设为child,border设为none,建议把默认的“确定”和“取消”按钮去掉,因为一般情况下点击这两个按钮后,对话框会销毁,而这里是不需要销毁的。(如果不小心点击了,悬浮框中的对话框内容就不能用了)为该对话框添加一个IDC_BUTTON_TEST按钮,点击弹出提示框。然后给该对话框资源关联一个类CDockablePaneDlg。

5.在类CMyPane头文件中添加如下代码:

      #include "DockablePaneDlg.h"

     public:
     CDockablePaneDlg m_dlg;


     在CMyPane.cpp文件的OnCreate函数中增加下述代码:

     // TODO:  在此添加您专用的创建代码
    CRect rectDummy;
    rectDummy.SetRectEmpty();


    //创建选项卡窗口
    if (!m_dlg.Create(IDD_DIALOG_DOCKDLG,this))
    {
        TRACE0("未能创建输出选项卡窗口/n");
        return -1;     
    }

    m_dlg.ShowWindow(SW_SHOW);


   在CMyPane.cpp文件的OnSize函数中增加下述代码:

    // TODO: 在此处添加消息处理程序代码
    //选项卡控件应覆盖整个工作区
    m_dlg.SetWindowPos (this, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
    m_dlg.ShowWindow(SW_SHOW);


6.在MainFrm.h中添加如下代码:

#include "MyPane.h"

public:
    CMyPane m_MyPane;


7.在MainFrm.cpp中的OnCreate函数中添加如下代码:


    if (!m_MyPane.Create(_T("MyPane"), this, CRect(0, 0, 100, 100), TRUE, IDD_DIALOG_DOCKDLG, WS_CHILD | WS_VISIBLE |WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
    {
        TRACE0("未能创建输出窗口/n");
        return FALSE;
    }

    m_MyPane.EnableDocking(CBRS_ALIGN_ANY);

    DockPane(&m_MyPane);    // 调整m_MyPane的大小使之适合父窗口

8.demo程序见

http://download.csdn.net/detail/xiaxiaojing/8811341



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值