【发布时间】:2018-09-12 11:51:42
【问题描述】:
我在我的 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。我使用函数 InsertButton 在我的工具栏中添加按钮
当我尝试通过菜单中的Reset Toolbar 按钮重置此工具栏时。工具栏不会重置为其原始状态,只会提示message box,并且不会恢复任何更改。
我认为问题出在CMFCToolBar::RestoreOriginalstate() 执行条件时:
if (m_uiOriginalResID == 0)
{
return FALSE;
}
为真,函数返回假,因为 m_uiOriginalResID 中没有资源 ID。
有没有办法加载动态创建的工具栏或者我必须继承RestoreOriginalstate函数并自己编写。
【问题讨论】:
-
正如documentation 指出的那样:“此方法从资源文件 [...]”加载工具栏。如果您的工具栏未在资源中定义,则不能使用此类成员。毕竟,系统应该从哪里加载布局?如果没有可加载的资源,您将不得不手动重新创建工具栏。尝试获取 Petzold 的“Programming Windows” 以了解资源。
标签: c++ mfc toolbar cmfctoolbar cmfcmenubutton