如何设置动态创建的CMFCToolbar的原始状态?
How to SetOriginalState of a dynamically created CMFCToolbar?
我在 mfc 应用程序中动态创建了一些工具栏
m_cToolBarEx.CreateEx(this, TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC | CBRS_HIDE_INPLACE);
工具栏没有位图或资源 ID。我使用函数插入按钮在我的工具栏中添加按钮
当我尝试通过菜单中的重置工具栏按钮重置此工具栏时。工具栏不会重置为其原始状态,只会提示消息框,而不会还原任何更改。
我认为问题是当CMFCToolBar::RestoreOriginalstate()
执行条件时:
if (m_uiOriginalResID == 0)
{
return FALSE;
}
获取 true,函数返回 false,因为m_uiOriginalResID中没有资源 ID。
有没有办法加载动态创建的工具栏,或者我必须继承 RestoreOriginalstate 函数并编写自己的工具栏。
您应该覆盖 RestoreOriginalstate((,如注释部分所述:
当用户从自定义菜单中选择"重置"时,将调用此方法。还可以手动调用此方法以编程方式重置菜单栏的状态。此方法从资源文件加载原始状态。
如果要在用户选择"重置"选项时执行任何处理,请重写此方法。
您还应该覆盖 CanBeRerestore(( 函数,如果资源 ID 为 0,则 defaut 实现返回 FALSE。
以下是 RestoreOriginalstate(( 的示例:
BOOL CLinksBar::RestoreOriginalstate ()
{
RemoveAllButtons ();
InsertButton (CLinkButton (_T("MSDN Home"), _T("http://www.msdn.com")));
InsertButton (CLinkButton (_T("Microsoft Home"), _T("http://www.microsoft.com")));
InsertButton (CLinkButton (_T("Visual C++ Developer Center"), _T("http://msdn2.microsoft.com/visualc/")));
EnableCustomizeButton (TRUE, -1, _T(""));
AdjustLayout ();
Invalidate ();
return TRUE;
}
相关文章:
- 将浮动的heightmap数组导出为16位原始值
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 如何将原始字节附加到 std::vector?
- 从堆栈分配的原始指针构造智能指针
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 将unique_ptr分配给原始指针
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- 从原始字节解码协议缓冲区(以 C++为单位)
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- C++:尝试使用等效的 STL 算法消除原始循环
- 如何在连接器 C++ 中将原始字节转换为字符串
- 通过引用传递类不会更改原始类
- 实现使用模板化类而不使原始类成为模板的类
- 如何在 2d 矢量 c++ 中复制元素并将其放在原始元素旁边
- 打印原始阵列和更改的阵列
- 如何设置动态创建的CMFCToolbar的原始状态?