1. 在資源裡添加dialog時,使用formview的dialog。
2. 給dialog添加類CParamsDlg,基類選CDialog,生成代碼後,将代碼中的CDialog改成CPanedialog
3. 建立CPaneDialog,其中m_wndFileView是一個CDockablePane子類的對象。


if ( ! m_wndFileView.Create(strFileView, this , CRect( 0 , 0 , 200 , 200 ), TRUE, ID_VIEW_FILEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
{
TRACE0("Failed to create File View window/n");
return FALSE; // failed to create
}


if ( ! m_dlgParams.Create (_T( " DialogBar " ), this , TRUE,

MAKEINTRESOURCE (IDD_FORM_PARAMS),

WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI,

IDD_FORM_PARAMS))
{
TRACE0("Failed to create Dialog Bar/n");
return FALSE; // fail to create
}


m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);

m_dlgParams.EnableDocking(CBRS_ALIGN_ANY);

DockPane( & m_wndFileView);


m_dlgParams.DockToWindow ( & m_wndFileView, CBRS_ALIGN_BOTTOM);


4. 在CParamsDlg中對控件添加響應事件,不能捕獲到,初步想到的解決辦法未,在CParamsDlg中添加一個通過控件id取得控件内容的函數,然後将窗體中的按鈕響應事件,添加到mainframe中,這樣由mainframe來捕獲,在響應函數裡調用CParamsDlg中的函數,來獲得對應控件的值。
cpanedialog風格問題:
在你的dialog裡面加入WM_PAINT的響應,在OnPaint()函數裡寫如下代碼:
CPaintDC dc(this);
CMemDC memDC(dc,this);
CRect rectClint;
GetClientRect(rectClint);
CMFCVisualManagerOffice2007::GetInstance()->OnFillOutlookPageButton(&memDC.GetDC(),this,rectClient, rectClient);
以上這些代碼還沒驗證,先把它儲存下來