C++ 使用新位图修改CreateToolbarEx函数时内存分配问题

C++ 使用新位图修改CreateToolbarEx函数时内存分配问题,c++,bitmap,memory-management,toolbar,C++,Bitmap,Memory Management,Toolbar,我试图修改一些使用CreateToolbarEx函数的旧代码(c++),试图使用一个新的位图,并用更华丽的36x36按钮替换我们的24x24像素工具栏按钮。我使用的函数如下所示: m_hToolbarWnd = CreateToolbarEx(m_hPagerWnd, ws, ID_TOOLBAR, NUMBERTOOLBARBITMAPS, hInst, IDB_TOOLBAR, tbInitButtons, m_ncButtons, 24, 24, 24, 24, sizeof(TBBUTT

我试图修改一些使用CreateToolbarEx函数的旧代码(c++),试图使用一个新的位图,并用更华丽的36x36按钮替换我们的24x24像素工具栏按钮。我使用的函数如下所示:

m_hToolbarWnd = CreateToolbarEx(m_hPagerWnd, ws, ID_TOOLBAR, NUMBERTOOLBARBITMAPS, hInst, IDB_TOOLBAR, tbInitButtons, m_ncButtons, 24, 24, 24, 24, sizeof(TBBUTTON));

我可以通过将“24”更改为“36”来扩展当前工具栏按钮的大小,但如果我将IDB_工具栏更改为新的工具栏位图并运行该程序,我会遇到指向CreateToolbarEx函数的内存访问读取冲突。我是否缺少位图如何获得内存分配或创建单个按钮的信息?新的工具栏是1584x36像素(44个按钮)。

这是旧的,但希望我找到的解决方案能帮助别人。我忽略了一个事实,即我正在从16位彩色位图更改为24位,这是我无法让CreateToolbarEx处理的。相反,我必须调用CreateWindowEx并为其创建和设置图标ImageList。工作代码:

m_hToolbarWnd = CreateWindowEx(0L, TOOLBARCLASSNAME, "", ws, 36, 36, 36, 36, m_hPagerWnd, (HMENU) ID_TOOLBAR, hInst, NULL);
SendMessage(m_hToolbarWnd, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
HBITMAP hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_TOOLBAR));
HIMAGELIST hIcons = ImageList_Create(36, 36, ILC_COLOR24, 0, m_ncButtons);
ImageList_Add(hIcons, hBmp, NULL);
SendMessage(m_hToolbarWnd, TB_SETIMAGELIST, 0, (LPARAM) hIcons);

上面的代码将24x24用于按钮,24x24用于位图仍然。。。正确,我只是复制了程序中的工作代码。当我尝试使用新位图运行代码时,我将其更改为36x36,并将IDB_工具栏重新定义为新位图。此重新定义会导致程序崩溃。您可能可以将位图导入到应用程序中,以便创建新id IDB_Toolbar X或其他类似的内容。有时,如果您将以前的ID用于控件或资源,则资源文件会变得异常。不幸的是,我以前尝试过,只是再次尝试,但没有成功。还有其他想法吗?你可以在
CreateToolbarEx
之后打电话到
GetLastError
,看看是否有什么东西完全失败了,但没有看到更多的代码或项目副本,我真的不知道哪里出了问题。