gpt4 book ai didi

c++ - CMDIChildWndEx 框架中的 DockPaneLeftOf

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:09 25 4
gpt4 key购买 nike

我有以下代码,我想将 CMFCToolBars 停靠在一行中,但使用 DockPaneLeftOf 不会导致显示任何工具栏,MainTools 除外。仅使用 DockPane 会导致工具栏显示在彼此下方。有什么想法吗?

BOOL CFloorFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{

if ((!m_ctlMainTools.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER, 2)) ||
(!m_ctlMainTools.LoadToolBar(IDR_FA_SC_TBAR)))
{
return FALSE;
}

if ((!m_ctlObjects.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER, 1)) ||
(!m_ctlObjects.LoadToolBar(IDR_FLOOR_OBJECTS)))
{
return FALSE;
}

if ((!m_ctlTools.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER, 3)) ||
(!m_ctlTools.LoadToolBar(IDR_FLOOR_TOOLS)))
{
return FALSE;
}

m_ctlMainTools.EnableDocking(CBRS_ALIGN_ANY);
m_ctlObjects.EnableDocking(CBRS_ALIGN_ANY);
m_ctlTools.EnableDocking(CBRS_ALIGN_ANY);
m_ctlLegend.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);

DockPane(&m_ctlMainTools);
DockPaneLeftOf(&m_ctlObjects, &m_ctlMainTools);
DockPaneLeftOf(&m_ctlTools, &m_ctlObjects);
DockPaneLeftOf(&m_ctlLegend, &m_ctlTools);

DragAcceptFiles(TRUE);
return TRUE;
}

最佳答案

也许您错过了 ShowPane 调用。这对我有用

DockPane(&m_wndEditBar);
m_wndEditBar.ShowPane(TRUE, FALSE, TRUE);
DockPaneLeftOf(&m_wndMainBar, &m_wndEditBar);
m_wndMainBar.ShowPane(TRUE, FALSE, TRUE);

m_wndEditBar 出现在 m_wndMainBar 的右侧。

此外,CMDIFrameWndEx::LoadFrame 函数最终会调用 CDockingManager::LoadState 来读取保存的注册表数据。它可以覆盖您更改的所有工具栏设置。清除您的程序注册表可能会成功。每当我们更改工具栏的按钮或状态时,我们都必须清除注册表以使其显示。

关于c++ - CMDIChildWndEx 框架中的 DockPaneLeftOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25884959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com