CDockablePane的使用

转载 2013年12月02日 19:09:21

转自:http://blog.csdn.net/sky_lily_1985/article/details/7609727

编译环境: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: }

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

相关文章推荐

CDockablePane使用心得

转自http://blog.csdn.net/chenlycly/article/details/38964113  谢谢 最近做项目使用到了MFC的CDockablePane进行布...

CDockablePane 使用

这个是转载的int m_nshowCurrent;m_nshowCurrent=theApp.GetProfileInt(_T("Workspace//Pane-377"),_T("IsFloatin...

CDockablePane的使用

(转自:http://blog.csdn.net/sky_lily_1985/article/details/7609727) 编译环境:win7 编译工具:VS2010   ...

CDockablePane的使用与注意

摘自网络,担心资源转移,特记录在此。 创建悬浮窗口的步骤: 1. 创建悬浮窗口类 每一个悬浮窗口都是一个CDockablePane的派生类的对象, 因此要为每一个悬浮窗口创建一个新类...
  • wqhua
  • wqhua
  • 2015年01月16日 13:01
  • 1614

CDockablePane使用及实例

文章为网上一网友写的,自己实际参考并运行,加入了自己的一点感悟,仅供学习、测试及参考,不对之处还请指正,共同学习~~ 编译工具:VS2010   内容一:新建一个CDockablePane派生类...

CDockablePane使用心得

http://blog.csdn.net/kikaylee/article/details/8936953 最近做项目使用到了MFC的CDockablePane进行布局,下面将应...

VS2010/MFC Ribbon风格下CDockablePane的使用

如果是想做成TAB页的,需要在正常创建完该pane并Dock完之后加入代码: 正常:         BOOL bNameValid; // 创建属性窗口 CString strProperties...

在CDockablePane中嵌入对话框

  • 2017年03月26日 16:03
  • 29.96MB
  • 下载

CDockablePane窗口启动隐藏

  • 2011年08月03日 18:49
  • 200KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CDockablePane的使用
举报原因:
原因补充:

(最多只允许输入30个字)