怎样保持CMFCToolBar 工具栏停靠时的位置不变?

纹刀雨辰 2017-03-13 02:51:58
我制作的CMFCToolBar 工具栏在程序第一次运行时(即清除注册表中的自动配置时,CleanState(_T("WorkSpace"));),工具栏的位置是正确的,即左侧靠上。但再次允许时(加载注册表自动配置)工具栏移动到了左侧垂直居中的位置。请问各位大神,怎样才能保持CMFCToolBar 工具栏停靠时的位置不变呢?

代码如下:

// MainFrm.h
CMFCToolBar m_wndMyToolBar;


// MainFrm.cpp
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
if (!m_wndMyToolBar.CreateEx(this, TBSTYLE_FLAT,
TBSTYLE_TOOLTIPS | CBRS_SIZE_DYNAMIC
| AFX_DEFAULT_TOOLBAR_STYLE) ||
!m_wndMyToolBar.LoadToolBar(IDR_MYTOOLBAR, IDB_COLDBITMAP, 0,
TRUE, IDB_DISBITMAP, 0, IDB_PRESBITMAP))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}

m_wndMyToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMyToolBar, AFX_IDW_DOCKBAR_LEFT );
m_wndMyToolBar.SetWindowText(_T("工具"));

...
}
...全文
651 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44789479 2020-03-06
  • 打赏
  • 举报
回复
老哥,我也遇到这个问题了,不知道现在回复算不算晚。在App类文件 即XXX.cpp文件 InitInstance()中添加一个行代码 CleanState() ; 添加在,然后再试试看看能不能解决你问题
纹刀雨辰 2017-03-14
  • 打赏
  • 举报
回复
引用 3 楼 tajon1226 的回复:
VC助手,上网搜一下 很方便的插件
安装了vc助手,还是不能解决,但还是谢谢了。 另外还是想问问怎样才能控制注册表加载后的工具栏位置的问题,在我想来,注册表加载后系统判断是左停靠,然后被默认垂直居中了,这里应该有个选项可以垂直靠上的,只是不知是应该设置注册表还是直接在程序中处理。 还有如果工具条浮动起来,注册表中是会记录位置的,为什么停靠就不记录了,有什么设置语句吗? 注册表记录信息本来是挺好用的,只是有bug就杯具了。。。。
走好每一步 2017-03-14
  • 打赏
  • 举报
回复
MFC的BCG控件记忆功能说实在话,我无力吐槽。 我理解错了,你这种情况我也遇过,后来怎么解决的给我忘了。 就是你使用不当就会出现这种情况!
走好每一步 2017-03-14
  • 打赏
  • 举报
回复
VC助手,上网搜一下 很方便的插件
走好每一步 2017-03-14
  • 打赏
  • 举报
回复
引用 5 楼 lzgame 的回复:
[quote=引用 3 楼 tajon1226 的回复:] VC助手,上网搜一下 很方便的插件
安装了vc助手,还是不能解决,但还是谢谢了。 另外还是想问问怎样才能控制注册表加载后的工具栏位置的问题,在我想来,注册表加载后系统判断是左停靠,然后被默认垂直居中了,这里应该有个选项可以垂直靠上的,只是不知是应该设置注册表还是直接在程序中处理。 还有如果工具条浮动起来,注册表中是会记录位置的,为什么停靠就不记录了,有什么设置语句吗? 注册表记录信息本来是挺好用的,只是有bug就杯具了。。。。[/quote] 不是Bug,是你没用好,需要好好看下源码。
纹刀雨辰 2017-03-13
  • 打赏
  • 举报
回复
引用 1 楼 tajon1226 的回复:
方法一:改这个参数CBRS_ALIGN_ANY m_wndMyToolBar.EnableDocking(CBRS_ALIGN_ANY); 直接看名字,CBRS_ALIGN_ANY的意思就是可以任意地方停靠 装个VC插件, 双击 CBRS_ALIGN_ANY, Alt + G 进去源码,有很多选项的。 或者直接看MSDN. 方法二: DockPane改成AddPane
方法一:弱弱的问一句,要装什么插件呢? 法二:改成AddPane的话就不能浮动了,这个更不好!
走好每一步 2017-03-13
  • 打赏
  • 举报
回复
方法一:改这个参数CBRS_ALIGN_ANY m_wndMyToolBar.EnableDocking(CBRS_ALIGN_ANY); 直接看名字,CBRS_ALIGN_ANY的意思就是可以任意地方停靠 装个VC插件, 双击 CBRS_ALIGN_ANY, Alt + G 进去源码,有很多选项的。 或者直接看MSDN. 方法二: DockPane改成AddPane

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧