可停靠窗体DockablePane
运行环境:win7 + VS2008 sp1
1.新建
应用程序类型:单文档,visualStudio项目类型
高级功能:可以去除会自动生成的高级框架窗格
2.插入资源Dialog
为该对话框添加一个类CMyDlg,继承Dialog类
3.添加MFC类,继承DockablePane类
CMyDlg m_dlg;
添加事件
intCDock::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDock::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_ dlg.Create(IDD_DIALOG1, this))
{
TRACE("未能创建底部对话框");
return -1;
}
m_ dlg.ShowWindow(SW_SHOW);
return 0;
}
void CDock::OnSize(UINTnType, int cx, int cy)
{
CDock::OnSize(nType, cx, cy);
m_ dlg.MoveWindow(0, 0, cx, cy);
}
4.MainFrm创建停靠窗体
CDock m_wndDock;
OnCreate里添加以下代码
// 定义可停靠窗体样式
static const DWORD AFX_DEFAULT_DOCKING_PANE_STYLE= AFX_CBRS_FLOAT |AFX_CBRS_CLOSE|AFX_CBRS_AUTOHIDE |AFX_CBRS_RESIZE;
// 创建底部可停靠窗体
if(!m_wndBottomDock.Create(TEXT(""), this, CRect(0, 0, 200, 200), TRUE,IDD_BOTTOM,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS| WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI, AFX_DEFAULT_DOCKING_PANE_STYLE,AFX_CBRS_CLOSE))
{
TRACE("未能创建右侧可停靠窗体");
return -1;
}
m_wndBottomDock.EnableDocking(CBRS_ALIGN_BOTTOM);
EnableDocking(CBRS_ALIGN_BOTTOM);
DockPane(&m_wndBottomDock);
// 关闭自动保存界面到注册表
this->GetDockingManager()->DisableRestoreDockState(TRUE);