为什么CToolBar :: LoadToolBar会失败?

时间:2012-03-19 15:42:46

标签: 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只是一堆演员,所以我不确定这里的问题是什么。

1 个答案:

答案 0 :(得分:0)

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

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

AFX_MANAGE_STATE(AfxGetStaticModuleState());