在创建时自动隐藏CDockablePane

时间:2014-05-29 18:08:30

标签: c++ mfc

我有3个可停靠的窗格,每个窗格包含1张图片。一个在左边,一个在右边,一个不可见。问题是,我想默认隐藏右侧的那个让左侧的那个占据整个空间。我搜索了文档,发现我应该在我的窗格中调用以下内容,但没有任何反应。

ToggleAutoHide();

我不知道我错过了什么...这是我的创作代码,以防它有用:

// image docking panel creation
if (!m_wndRawImage.Create(_T("Raw Image"), this, imgRect, TRUE, ID_VIEW_RAWIMGWND, dwPaneStyle| CBRS_RIGHT, AFX_CBRS_REGULAR_TABS, AFX_CBRS_RESIZE))
{
    TRACE0("Failed to create image tab window\n");
    return -1;
}

if (!m_wndRefImage.Create(_T("Reference Image"), this, imgRect, TRUE, ID_VIEW_REFIMGWND, dwPaneStyle| CBRS_RIGHT))
{
    TRACE0("Failed to create image tab window\n");
    return -1;
}

if (!m_wndCalibImage.Create(_T("Calibrated Image"), this, imgRect, TRUE, ID_VIEW_CALIBIMGWND, dwPaneStyle| CBRS_RIGHT))
{
    TRACE0("Failed to create image tab window\n");
    return -1;
}

m_wndImagePane1.EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT);
m_wndImagePane2.EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT);
m_wndImagePane3.EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT);

CDockingManager::SetDockingMode(DT_SMART);

EnableDocking(CBRS_ALIGN_ANY);
EnableAutoHidePanes(CBRS_ALIGN_ANY);


// image panes
DockPane(&m_wndImagePane3);
CDockablePane* pTabbedBar2 = NULL;
m_wndImagePane2.AttachToTabWnd(&m_wndImagePane3, DM_SHOW, FALSE, &pTabbedBar2);
m_wndImagePane2.ShowPane(FALSE, FALSE, FALSE);
m_wndImagePane3.ShowPane(TRUE, FALSE, TRUE);
m_wndImagePane3.ToggleAutoHide(); //<---- Problem is here

DockPane(&m_wndImagePane1);
m_wndImagePane1.ShowPane(TRUE, FALSE, TRUE);

谢谢!

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您希望隐藏应用启动中的窗格。

我使用ON_WM_SHOWWINDOW()消息来隐藏窗格。像这样:

将此添加到CMainFrame类声明:

afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);

并将其添加到消息映射:

ON_WM_SHOWWINDOW()

并将其添加到主代码中:

void CMainFrame::OnShowWindow(BOOL bShow, UINT nStatus)
{
    CFrameWndEx::OnShowWindow(bShow, nStatus);

    // Hide Properties pane in startup
    m_wndProperties.SetAutoHideMode(FALSE, CBRS_ALIGN_ANY);
    m_wndProperties.ShowPane(FALSE, FALSE, FALSE);
}

希望它可以提供帮助!