我一直在尝试在对话框中添加工具栏,当我调用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只是一堆演员,所以我不确定这里的问题是什么。
答案 0 :(得分:0)
MAKEINTRESOURCE将返回看似错误的指针,但这是正常的。资源可以是字符串或整数作为字符串。
此代码是否被编译为DLL?如果是这样,也许您需要将以下代码添加到函数的顶部,以允许MFC确定从哪个DLL获取它。
AFX_MANAGE_STATE(AfxGetStaticModuleState());