私はあなたには簡単な答えがありません。私はVisual Studio 2017でMFC Feature Packを使用して3つのドッキング・ウィンドウを持っていました。私はCleanSlateを呼び出して、ドッキング・ペインを配置して可視であることを確認しました。私は、メインフレームウィンドウとドッキングウィンドウのサイズを正しく見えるように実験しました。
void CMainFrame::OnButtonWindowResetLayout()
{
theApp.CleanSlate();
CRect rcInputsOutputs(0, 0, 400, 50);
m_wndPaneInputsOutputs.DockToFrameWindow(CBRS_ALIGN_RIGHT, rcInputsOutputs, DT_DOCK_LAST, NULL, -1, FALSE);
m_wndPaneInputsOutputs.ShowPane(TRUE);
CRect rcDeviceStatus(0, 0, 600, 180);
m_wndPaneDeviceStatus.DockToFrameWindow(CBRS_ALIGN_BOTTOM, rcDeviceStatus, DT_DOCK_LAST, NULL, -1, TRUE);
m_wndPaneDeviceStatus.ShowPane(TRUE);
CRect rcOutput(0, 0, 600, 70);
m_wndOutput.DockToFrameWindow(CBRS_ALIGN_BOTTOM, rcOutput, DT_DOCK_LAST, NULL, -1, TRUE);
m_wndOutput.ShowPane(TRUE);
AdjustDockingLayout();
SetWindowPos(&CWnd::wndTop, 0, 0, 900, 680, SWP_NOMOVE | SWP_NOACTIVATE | SWP_SHOWWINDOW);
}
各ペインのクラスには、機能を持っています
void CPaneDialogEx::ShowPane(BOOL showPane)
{
if (showPane != IsVisible()) {
CMainFrame* pMainFrame = DYNAMIC_DOWNCAST(CMainFrame, GetTopLevelFrame());
if (pMainFrame != NULL) {
pMainFrame->SetFocus();
pMainFrame->ShowPane(this, showPane, FALSE, FALSE);
pMainFrame->RecalcLayout();
}
}
}