基于CControlBar创建水平或垂直方向的自定义工具栏
MFC: Creating horizontally or vertically oriented custom toolbar based on CControlBar
尝试使用垂直方向的CControlBar派生自定义工具栏。大概到目前为止没有结果,因为它总是水平的或总是垂直的,或者我实际上不知道-太多的参数无法同步,我担心!
这是我到目前为止得到的:
// creating the CControlBar-derived toolbar
CMyCB cb; // CControlBar-derived toolbar
cb.Create( AfxRegisterWndClass(0),
NULL,
WS_CHILD | WS_VISIBLE ,
CRect(0,0,100,100),
AfxGetMainWnd(),
0
);
cb.SetBarStyle( cb.GetBarStyle() | CBRS_LEFT | CBRS_SIZE_DYNAMIC | CBRS_GRIPPER );
cb.EnableDocking( CBRS_ORIENT_HORZ );
// in CFrameWnd-derived window constructor
this->EnableDocking( CBRS_ALIGN_ANY );
this->FloatControlBar( &cb, CPoint(100,100), CBRS_ALIGN_LEFT );
this->ShowControlBar( &cb, TRUE, FALSE );
观察CControlBar::CalcFixedLayout(在CMyCB中重写)通过在那里放置一个断点来调用,我可以看到它的bHorz参数(通知cb是水平还是垂直工具栏)在第一次调用时采用"2",在随后的第二次调用时采用"0"。
我能从中得出什么结论?是否有一种方法可以创建始终水平或始终垂直的自定义工具栏?(至少与bHorz参数一样)请参阅上面代码片段中的参数CBRS_ *。多谢。
托马斯
我从来没有得到一个工具栏来对齐它的左右只是设置CreateEx调用。潘斯没有问题。甚至调试到MFC代码的深度也没有告诉我原因。
这是我的简单解决方案。
m_wndHorzBar是要向左对齐的栏的名称。我只是使用向导创建了一些示例代码,我希望您有一个正常的工具栏和菜单,以便您可以看到上下文。
// Create it (just for simplicity no error checking)
// CBR_LEFT seamed to be ignored
m_wndHorzBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
...
// Allow the normal bars to align anywhere
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
// this bar should be aligned only in the left docking area
m_wndHorzBar.EnableDocking(CBRS_ALIGN_LEFT);
// Perform the initial docking
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndToolBar);
DockPane(&m_wndHorzBar);
// Now allow the bar to be docked anywhere by the user
m_wndHorzBar.EnableDocking(CBRS_ALIGN_ANY);
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- C++自定义比较函数
- 如何比较自定义类的std::变体
- std::设置自定义比较器
- 如何正确实现和访问运算符的各种自定义枚举器
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 自定义先决条件对移动分配运算符有效吗
- 使用VS Code和CMake Tools运行自定义命令
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- std::ranges::elements_view,用于自定义类似元组的数据
- 跟随整数索引列表的自定义类迭代器
- 参数化自定义CMake工具链
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 如何在自定义类中启用'auto loops'?
- 使用QJsEngine在Qt中注册自定义类型
- Qt自定义QPush按钮未显示在布局上
- 自定义对象的dlib序列化在gcc中失败
- 自定义创建QFuture
- 基于CControlBar创建水平或垂直方向的自定义工具栏