【问题标题】:MFC Feature Pack 2008 CPaneDialog as CDialogBarMFC 功能包 2008 CPaneDialog 作为 CDialogBar
【发布时间】:2015-08-30 20:37:03
【问题描述】:

我正在使用 MFC 功能包 2008 编写软件。我的应用程序基于此应用程序的旧版本。旧版本没有使用功能包编写。在这个应用程序的旧版本中,有 CToolBar 和 3 个 CDialogBars。如下所示:

在我的应用程序中,我将 CToolBar 更改为 CMFCToolbar 并将 CDialogBars 更改为 CPaneDialogs。我不知道如何设置 CPaneDialogs 以产生与旧应用程序相同的视觉效果?如何将 CPaneDialogs 停靠在 CMFCToolbar 的左侧?

总结一下,我做了什么:

1) 以这种方式创建 CPaneDialogs:

    if (!m_LoadDlgBar.Create(_T("DialogBar"),this, 0,IDD_REGBAR,CBRS_TOP | CBRS_FLYBY |CBRS_GRIPPER|  WS_CLIPCHILDREN,IDD_REGBAR))
    {
       TRACE0("Failed to create dialog bar\n");
       return -1;      // fail to create
    }

2) 对接:

EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_CommBar);          // this is CMFCToolbar
DockPaneLeftOf(&m_LoadDlgBar, &m_CommBar);    
DockPaneLeftOf(&m_TCPIPDlgBar, &m_LoadDlgBar);    
DockPaneLeftOf(&m_ConnDlgBar, &m_TCPIPDlgBar);    

3) 显示窗格:

m_LoadDlgBar.ShowPane(TRUE,FALSE,FALSE);

这是结果:

所有的 CPaneDialogs 都停靠在同一个地方,在 CMFCToolbar 上。

【问题讨论】:

    标签: c++ visual-studio-2008 mfc mfc-feature-pack


    【解决方案1】:

    您使用 DockPane 启动对接,因此不要使用 CFrameWndEx::DockPane 使用 CFrameWndEx::DockPaneLeftOf

    PS:这个article 提供了一点帮助,但遗憾的是它只是触及了表面。

    【讨论】:

    • 我使用 DockPaneLeftOf,但它不能正常工作。请在问题中查看,我添加了一些信息。
    • 错误是什么。您的代码始终将您的 CPaneDialog 窗口停靠在控制栏的左侧,下一个窗口再次位于...的左侧。
    • 我不明白。你能写一些示例代码来展示如何正确地做到这一点吗?
    • DockPaneLeftOf(&m_LoadDlgBar, &m_CommBar);告诉 m_LoadDlgBar 位于 m_CommBar 的左侧。如果您想让 m_LoadDlgBar 位于 m_CommBar 的右侧,则必须还原它。
    猜你喜欢
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2011-06-27
    • 2010-10-04
    相关资源
    最近更新 更多