程序基于VS10提供的单文档demo生成的。
左侧建立outlook导航栏,下侧建立output窗口。
样式如图所示。
现在想在右上角空白处添加一个Dialog对话框,具体思路如下:
建立对话框(类C**box),继承于CDialogEx。
生成类ControlPanel,继承于CDockablePane,添加:
C**box m_dlg;
相应添加
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnDestroy( );三个函数。
后续于CMainFrame::OnCreate函数添加代码如下:
m_wndPanel.Create(_T("Rtppp"),this,CRect(0,0,300,300),TRUE,666,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI /*| C BRS_ALIGN_TOP *//*| CBRS_ALIGN_RIGHT*/);
m_wndPanel.EnableDocking(CBRS_ALIGN_RIGHT);
DockPane(&m_wndPanel);
其中ControlPanel m_wndPanel;
CMainFrame::OnCreate函数中关于outlookbar和output窗口代码如下所示:
// 导航窗格将创建在左侧,因此将暂时禁用左侧的停靠:
EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM | CBRS_ALIGN_RIGHT);
// 创建并设置“Outlook”导航栏:
if (!CreateOutlookBar(m_wndNavigationBar, ID_VIEW_NAVIGATION, m_wndOutlookPane, m_wndTree, m_wndCalendar, 250))
{
TRACE0("未能创建导航窗格\n");
return -1; // 未能创建
}
// 已创建 Outlook 栏,应允许在左侧停靠。
EnableDocking(CBRS_ALIGN_LEFT);
EnableAutoHidePanes(CBRS_ALIGN_RIGHT);
// 创建停靠窗口
if (!CreateDockingWindows())
{
TRACE0("未能创建停靠窗口\n");
return -1;
}
m_wndOutput.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndOutput);
程序运行效果如下所示:
其中插入的对话框未能完全填充满界面右上角空间。
请问对话框应该怎样设置,才能根据outlookbar和output窗口的大小,确定剩余空间的大小,以此确定对话框的尺寸?
谢谢各位,望不吝指教!!!