gpt4 book ai didi

c++ - MFC:如何在旧版 MFC ver 6 中保存工具栏的位置?

转载 作者:行者123 更新时间:2023-11-28 05:52:18 37 4
gpt4 key购买 nike

我有一个引人注目的问题:如何在旧版 MFC ver 6 中保存工具栏的位置?

我不能使用 CWinApp::SaveBarState,因为在调用此函数时并非所有工具栏都存在(导致它断言)。相反,我根据加载的文档类型实例化工具栏。不幸的是,我还没有找到使用 CToolBarCtrl::SaveState 的方式,我猜这将是理想的使用方式。但是,在玩它时,我遇到了两个问题:

  • (a) 它奇怪地保存了工具栏,因此当恢复时,它没有按钮(只有最小尺寸,这从无按钮的事实中暗示)。
  • (b) 当我将两个工具栏并排放置并关闭应用程序时,它们在恢复时显示在彼此下方(这是我想要避免的)。我理解这可能是错误保存状态的结果,就像(a)中描述的那样。

感谢任何帮助,非常感谢!

问候,

托马斯

最佳答案

在切换到功能区之前,我使用了 this CodeProject article 中的这个功能安排我的工具栏:

void CMainFrame::DockControlBarLeftOf(CToolBar* Bar, CToolBar* LeftOf)
{
CRect rect;
DWORD dw;
UINT n;

// get MFC to adjust the dimensions of all docked ToolBars
// so that GetWindowRect will be accurate
RecalcLayout(TRUE);

LeftOf->GetWindowRect(&rect);
rect.OffsetRect(1,0);
dw=LeftOf->GetBarStyle();
n = 0;
n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;

// When we take the default parameters on rect, DockControlBar will dock
// each Toolbar on a seperate line. By calculating a rectangle, we
// are simulating a Toolbar being dragged to that location and docked.
DockControlBar(Bar,n,&rect);
}

我敢肯定,您可以轻松地使用它来保存和加载代码以恢复工具栏。

关于c++ - MFC:如何在旧版 MFC ver 6 中保存工具栏的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34974565/

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