MFC:如何在旧版 MFC 版本 6 中保存工具栏的位置
MFC: How to save the position of toolbars in the legacy MFC ver 6?
我有一个引人注目的问题:如何在旧版 MFC ver 6 中保存工具栏的位置?
我不能使用CWinApp::SaveBarState
因为目前并非所有工具栏都存在此函数(导致其断言)。相反,我根据加载的文档类型实例化工具栏。不幸的是,我还没有找到CToolBarCtrl::SaveState
理想的方式,我想。但是,在玩它时,我遇到了两个问题:
- (
- a)它奇怪地保存了工具栏,以便在恢复时,它没有按钮(只有最小的尺寸,这意味着没有按钮的事实)。
- (b) 当我将两个工具栏并排放置并关闭应用程序时,它们在恢复时会显示在彼此下方(这是我想要避免的)。我知道这可能是错误地拯救国家的结果,正如(a)中所述。
任何帮助之手表示赞赏,非常感谢!
问候
托马斯
在切换到功能区之前,我使用了这篇 CodeProject 文章中的这个功能来排列我的工具栏:
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);
}
我敢肯定,您可以轻松地将其用于保存和加载代码以恢复工具栏。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- C++ MFC Libraries in Travis CI
- 如何将子窗口(MFC 应用程序)的工作区保存到图像
- 如何保存MFC应用程序的布局设置
- 在基于对话框的MFC应用程序中保存和恢复元素的状态
- 设计模式保存MFC对话框控件状态的步骤
- MFC.保存和加载CMFCRibbonRichEditCtrl
- C++ 在退出 WINAPI 之前将控制台输出保存到文本文件(无 MFC)
- MFC:如何在旧版 MFC 版本 6 中保存工具栏的位置
- 添加,保存数据从MFC应用程序(Visual Studio 2015)到SQL Server
- MFC如何保存和重用当前设备上下文的CDC
- 在没有MFC的win32中保存/打开公用对话框
- 保存工作区MFC C++MDI
- 保存应用程序设置 MFC CArchive 方式
- MFC 保存文件对话框