CDockablePane的使用

编译环境:win7

编译工具:VS2010

 

内容一:新建一个CDockablePane派生类。

新建一个单文档

 

从CDockablePane派生出一个Pane类

 

在MainFrm中加入:

Pane pane;

 

在MainFrm的OnCreate的方法中加入

// TODO: 在此添加您专用的创建代码
if (!pane.Create(_T("面板"), this, CRect(0, 0, 200, 200), TRUE, 1001, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
{
TRACE0("Failed to create LeftPane\n");
return -1;
}

pane.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&pane);

 

在BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)与END_MESSAGE_MAP()中间加入

ON_WM_CREATE()

运行得到:

 

在CDockablePane中嵌入对话框

CDockablePane类可以用来创建停靠栏。可以将其他控件集成到CDockablePane的派生类中。本文描述如何将对话框集成到CDockablePane中。集成其他控件的方式类似。

1、首先创建多文档应用程序,创建一个对话框类CTestDlg。

2、在程序添加一个停靠栏类,名为ControlPanel,其父类为CDockablePane,在该类中添加对话框成员。

需要将对话框的style设置为child。另外border设置为none的话,得到的界面看上去会更主流一点。

   1: class ControlPanel : public CDockablePane
   2: {
   3:     .....
   4: public:
   5:     CTestDlg m_dlg;
   6: };

3、在ControlPanel的OnCreate方法中创建并显示对话框。

   1: int ControlPanel::OnCreate(LPCREATESTRUCT lpCreateStruct)
   2: {
   3:     if (CDockablePane::OnCreate(lpCreateStruct) == -1)
   4:         return -1;
   5:  
   6:     // TODO:  Add your specialized creation code here
   7:     
   8:     m_dlg.Create(IDD_DIALOG_TEST,this);
   9:     m_dlg.ShowWindow(SW_SHOW);
  10:     return 0;
  11: }

4、ControlPanel销毁时,对话框也销毁掉:

   1: void ControlPanel::OnDestroy()
   2: {
   3:     CDockablePane::OnDestroy();
   4:  
   5:     // TODO: Add your message handler code here
   6:     m_dlg.DestroyWindow();
   7: }

5、ControlPanel尺寸变化、隐藏的时候,对话框也要做相关处理:

   1: void ControlPanel::OnSize(UINT nType, int cx, int cy)
   2: {
   3:     CDockablePane::OnSize(nType, cx, cy);
   4:  
   5:     // TODO: Add your message handler code here
   6:     if(m_dlg.GetSafeHwnd())
   7:     {
   8:         CRect rct;
   9:         GetClientRect(rct);
  10:         m_dlg.MoveWindow(rct);
  11:     }
  12: }

6、在框架类中添加ControlPanel成员:

   1: class CMainFrame : public CMDIFrameWndEx
   2: {
   3:     ...
   4:     ControlPanel m_Panel;
   5:     ...
   6: };

7、在框架类创建时,创建这个ControlPanel对象:

Create函数里面的666是这个停靠栏的ID,这里是随便指定的一个数值,只要不和其他已用资源重复即可,真正应用的时候,以在字符串表中添加一个ID。

   1: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
   2: {
   3:     ...
   4:     m_Panel.Create(_T("tset"),this,CRect(0,0,300,300),TRUE,666,
   5:         WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI);
   6:     m_Panel.EnableDocking(CBRS_ALIGN_ANY);
   7:  
   8:     EnableDocking(CBRS_ALIGN_ANY);
   9:     DockPane(&m_Panel);
  10:     ...
  11: }

编译运行后,可以发现框架中添加了一个停靠栏,之前创建的那个对话框嵌入在里面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC(Microsoft Foundation Classes)是微软公司提供的一个用于开发Windows桌面应用程序的框架。CDockablePane是MFC中的一个,用于创建可停靠的面板。 CDockablePane是CWnd的派生,它提供了创建和管理可停靠面板的功能。使用CDockablePane,我们可以将面板放置在主窗口的工作区中,并且可以通过拖放的方式改变面板的位置和大小。CDockablePane提供了一些常用的方法,用于设置面板的样式、标题和图标等。 要使用CDockablePane,首先需要在MFC应用程序的主框架窗口中添加一个CDockablePane成员变量。然后,通过调用CDockablePane的Create方法,可以在主框架窗口中创建一个可停靠的面板。可以通过调用CDockablePane的各种方法,来设置面板的属性和样式。 在创建CDockablePane对象后,可以使用其AddPane方法向面板中添加子窗口。可以使用CDockablePane的各种方法,来管理面板中的子窗口,如获取面板中子窗口的数量、显示或隐藏子窗口等。 CDockablePane还提供了一些回调函数,可以通过重写这些函数,实现自定义的面板行为。例如,可以重写OnEraseWorkArea方法来绘制面板的背景,或者重写OnShowPopupMenu方法来自定义面板的右键菜单。 总之,CDockablePane是MFC中的一个非常有用的,可以用于创建可停靠的面板,方便用户在应用程序中进行操作。使用CDockablePane,可以轻松实现面板的拖放、调整大小和隐藏显示等功能,提升了用户的交互体验。 ### 回答2: MFC(Microsoft Foundation Class)是微软公司开发的用于Windows操作系统的程序开发框架。CDockablePane是MFC中的一个,用于创建可停靠的窗格。 CDockablePane通过继承CWnd实现,可以在应用程序的主窗口中创建可停靠的子窗格。它可以被拖动、停靠和浮动,并且可以在主窗口的各个区域(如左侧、右侧、底部等)进行停靠。 要使用CDockablePane,首先需要在主窗口中添加一个成员变量,该变量为CDockablePane型。然后,在主窗口的OnCreate函数中调用Create函数来创建CDockablePane对象。可以通过SetWindowText函数设置窗格的标题。 接下来,可以通过调用EnableDocking函数来启用CDockablePane的停靠功能。可以使用DockPane函数将CDockablePane对象停靠到主窗口的指定区域。 CDockablePane还提供了一些其他的功能,如在窗格中添加控件、处理事件等。可以通过重写OnCreate、OnSize等函数来实现这些功能。 总之,CDockablePane是MFC中一个用于创建可停靠窗格的,通过调用相应的函数和重写相关的函数可以实现窗格的创建、停靠、浮动等功能。它为用户提供了一个灵活的界面布局方式,可以方便地进行界面设计。 ### 回答3: MFC(Microsoft Foundation Classes)是微软提供的一套用于Windows应用程序开发的C++库。CDockablePane是MFC中的一个,用于实现可以停靠的窗格。 CDockablePane继承自CBasePane,它可以被用户拖动或者停靠到不同的位置,如主窗口的顶端、左侧、右侧或者底部。CDockablePane提供了一些方法和属性,用于控制窗格的行为和外观。 使用CDockablePane创建一个停靠窗格的步骤如下: 1. 在MFC应用程序的主框架窗口中,添加一个成员变量,型为CDockablePane或者CDockablePane的派生。 2. 在为主窗口生成的OnInitDialog()函数里调用Create()方法,创建CDockablePane对象。 3. 设置窗格的显示位置、大小以及其他外观属性,例如调用SetWindowText()方法设置窗格的标题,调用EnableAutoHide()方法启用自动隐藏等。 4. 在主框架窗口的OnCreate()方法中调用DockControlBar()方法,将窗格添加到主窗口,并根据需要布置窗格的位置和大小。 5. 在需要显示或隐藏窗格的时候,调用ShowPane()方法。 CDockablePane还提供了一些事件处理方法,例如OnPaneContextMenu()用于处理窗格的右键菜单事件,OnPaneResized()用于处理窗格大小改变事件等。开发人员可以重写这些事件处理方法,以实现自定义的行为。 总之,CDockablePane是MFC中用于创建可以停靠的窗格的,通过使用CDockablePane,开发人员可以方便地实现灵活的界面布局,并提供交互性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值