两个CDialogBar在CMainFrame的头文件里加入变量
CMyDialogBar m_bar;
CMyDialogBar1 m_bar1;
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//...
...
CXTPDockingPane* pwndpane1 = m_paneManager.CreatePane(
IDD_DIALOG,CRect(0,0,200,75),xtpPaneDockLeft);
CXTPDockingPane* pwndPane2 = m_paneManager.CreatePane(
IDD_DIALOG1,CRect(0,0,200,100),xtpPaneDockBottom, pwndpane1);
return 0;
}
添加ON_MESSAGE(XTPWM_DOCKINGPANE_NOTIFY, OnDockingPaneNotify)
LRESULT CMainFrame::OnDockingPaneNotify(WPARAM wParam, LPARAM lParam)
{
if (wParam == XTP_DPN_SHOWWINDOW)
{
CXTPDockingPane* pPane = (CXTPDockingPane*)lParam;
if (!pPane->IsValid())
{
switch (pPane->GetID())
{
case IDD_DIALOG:
{
if(m_bar.GetSafeHwnd()==0)
{
m_bar.Create(this,IDD_DIALOG,CBRS_LEFT|CBRS_TOOLTIPS|CBRS_FLYBY, IDD_DIALOG);
}
pPane->Attach(&m_bar);
break;
}
case IDD_DIALOG1:
{
if(m_bar1.GetSafeHwnd()==0)
{
m_bar1.Create(this,IDD_DIALOG1,CBRS_LEFT|CBRS_TOOLTIPS|CBRS_FLYBY, IDD_DIALOG1);
}
pPane->Attach(&m_bar1);
break;
}
}
}
return TRUE;
}
return FALSE;
}
如此就实现了CDialogBar在文档的左边的显示和隐藏
也可以在OnCreate的后面加入:CXTPDockingPaneLayout
CXTPDockingPane* pwndpane1 = m_paneManager.CreatePane(
IDD_DIALOG,CRect(0,0,200,75),xtpPaneDockLeft);
CXTPDockingPane* pwndPane2 = m_paneManager.CreatePane(
IDD_DIALOG1,CRect(0,0,200,100),xtpPaneDockBottom, pwndpane1);
CXTPDockingPaneLayout layoutNormal(&m_paneManager);
if (layoutNormal.Load(_T("NormalLayout")))
{
m_paneManager.SetLayout(&layoutNormal);
}