工具栏停靠位置问题

zhaokai3000 2010-12-13 03:39:54
我用vs2008的MDI模板创建的工程。
发现MainFrame里面要是创建了两个或两个以上的工具栏,工具栏都设置为可停靠方式。若是窗口以最大化的方式打开,则每次打开程序时,工具栏在水平方向上的位置都不固定。请问该怎样解决?
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2010-12-13
  • 打赏
  • 举报
回复
嗯,也许那个也有更好的方法。
zhaokai3000 2010-12-13
  • 打赏
  • 举报
回复
谢谢。可是vs2008模板创建的工具栏是CMFCToolBar类型的,只能用DockPane设置停靠,没有停靠位置的这个参数的。

要不我改成用CControlBar得了。
zhaokai3000 2010-12-13
  • 打赏
  • 举报
回复
这个工具栏是CMFCToolBar类的。msdn翻了半天好像没有类似的。。
用户 昵称 2010-12-13
  • 打赏
  • 举报
回复
void CMainFrame::DockControlBarAtRight( CToolBar* Left, CToolBar* Right )
{
CRect rect;
DWORD dw;
UINT n;

// 让 MFC 调整所有浮动工具条的尺寸,以便GetWindowRect的到准确结果
RecalcLayout( TRUE );

Left->GetWindowRect( &rect );
rect.OffsetRect( 1, 0 );
dw = Left->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;

// 当矩形使用默认参数时,DockControlBar 将在单独的一行里浮动工具条,
// 通过计算矩形的大小来模拟工具条拖动到指定位置实现浮动。
DockControlBar( Right, n, &rect );
}

类似代码可以调整工具条的位置。
用户 昵称 2010-12-13
  • 打赏
  • 举报
回复
好像是SetControlBarState之类的函数,忘了。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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