CDockablePane类的使用

1、CDockablePane说明
        CDockablePane是一个通用窗口容器,它主要有两个用途:在一个框架中悬浮或者停靠窗口。在复杂布局的应用程序中,它可以显示或隐藏所装载的窗口,为应用程序窗口提供额外的空间。
        可以将一个窗格停靠在主框架窗口;可以切换窗格自动隐藏模式;可以附加一个窗格到一个选项卡式窗口中;

2、设置CDockablePane最小尺寸
        调用CDockablePane::SetMinSize即可设置最小宽度和高度。

3、让Output窗口在下方充满整个窗口

        默认情况下生成的SDI窗口中的Output窗口在下方不是充满整个窗口的。要实现如下的充满的效果:



        经过的代码的比对,发现哪个先Dock哪个就在对应的方向上充满区域,所以将output窗口先Dock即可,代码如下:

4、屏蔽掉pane右上角的几个按钮
        即将 这三个小按钮去掉。
       

      (1) 去掉关闭按钮
        在CDockingPane的派生类中,重写下列方法即可:

  1. virtual BOOL FloatPane(CRect rectFloat, AFX_DOCK_METHOD dockMethod = DM_UNKNOWN, bool bShow = true) { return FALSE; } 
  2. virtual BOOL CanFloat() const { return FALSE; } 
  3. virtual BOOL CanBeClosed() const { return FALSE; } 
    virtual BOOL FloatPane(CRect rectFloat, AFX_DOCK_METHOD dockMethod = DM_UNKNOWN, bool bShow = true) { return FALSE; }
    virtual BOOL CanFloat() const { return FALSE; }
    virtual BOOL CanBeClosed() const { return FALSE; }

      

      (2) 去掉自动掩藏按钮
       在CMainFrame::OnCreate()中将下面的一句代码注释掉即可:

  1. //EnableAutoHidePanes(CBRS_ALIGN_ANY); 

 

      //EnableAutoHidePanes(CBRS_ALIGN_ANY);
       (3) 去掉下拉箭头按钮
       在CMainFrame::OnCreate()中将下面的一句代码添加上即可:
  1. GetDockingManager()->EnableDockSiteMenu(FALSE); 

 

     GetDockingManager()->EnableDockSiteMenu(FALSE);
     (4) Pane Tab中关闭按钮的去除
      Pane Tab其实也是一个CDockingPane,查看CDockingPane及基类的源码得知,Pane Tab右上角的关闭按钮与AFX_CBRS_CLOSE风格对应,将AFX_CBRS_CLOSE风格去掉即可。继续查看代码,有GetControlBarStyle和SetControlBarStyle函数,所以想法可行,如下所示:
  1. CDockablePane* pTabbedBar = NULL; 
  2. m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar); 
  3. DWORD dwStyle = pTabbedBar->GetControlBarStyle(); 
  4. pTabbedBar->SetControlBarStyle( dwStyle & ~AFX_CBRS_CLOSE); // 去除AFX_CBRS_CLOSE风格 
  5. m_wndProperties.EnableDocking(CBRS_ALIGN_ANY); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值