c++ - 为什么 CToolBar::LoadToolBar 会失败?

标签 c++ mfc toolbar

我一直在尝试将工具栏添加到对话框,但当我调用 m_ToolBar.LoadToolBar 时它失败了。

我创建了一个新的工具栏资源并将其命名为 IDR_TOOLBAR1,然后将其添加到代码中

if(!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | 
WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | 
CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_ToolBar.LoadToolBar(IDR_TOOLBAR1))
{
    EndDialog(IDCANCEL);
}

出于某种原因,m_ToolBar.LoadToolBar(IDR_TOOLBAR1) 返回 false。我在 Visual Studio 中创建了工具栏资源,因此我认为我的 IDR_TOOLBAR1 设置正确。

什么可能导致加载失败?

编辑:我不确定这是否相关,但我注意到工具栏的 ID 与另一个控件的 ID 匹配

#define IDC_EDIT_EVENTS                 213
#define IDR_TOOLBAR1                    213

在自动生成的资源文件中

edit2:当我尝试调试 LoadToolBar 时,我发现它调用了 MAKEINTRESOURCE,这似乎返回了错误的指针。 MAKEINTRESOURCE 只是一堆 Actor ,所以我不确定这里的问题是什么。

最佳答案

MAKEINTRESOURCE 将返回一个看似错误的指针,但这是正常的。资源可以是字符串或转换为字符串的整数。

这段代码是否偶然被编译为 DLL?如果是这样,也许您需要将以下代码添加到该函数的顶部,以允许 MFC 确定从哪个 DLL 中获取它。

AFX_MANAGE_STATE(AfxGetStaticModuleState());

关于c++ - 为什么 CToolBar::LoadToolBar 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9773227/

相关文章:

c++ - 错误 C2228 : left of '.Alloc' must have class/struct/union

c++ - MFC 使一个类同时扩展 CView 和 CDockablePane

python - 如何实例化现有的 QGIS 插件工具栏

swift - 在 UIToolBar 中实现 "done"按钮来关闭 UIDatePicker 和 ToolBar

ios - UIDatepicker 工具栏在 ios swift 中无法在横向模式下工作

c++ - CodeRunner 和多文件项目

c++ - 使用 CMake 为 C++ 构建协议(protocol)

c++ - 无法编译 64 位 Visual Studio 2010 项目

c++ - 在 Windows Vista 上将 MSADO15.DLL 和 C++ 与 MinGW/GCC 结合使用

c++ - 如何在循环中使用 cin.ignore