我试图让我的工具栏可以使用ImageList
。图像是单独的PNG,因此我将它们连续添加到ImageList
中,但是Bbt无法正常工作。这是将Image
添加到ImageList
的代码:
HIMAGELIST CreateToolBarImages(HINSTANCE hInst)
{
HIMAGELIST v_ImageList = NULL;
// IMAGE_LIST v_Img;
HICON hIcon;
HBITMAP hBit;
COLORMAP cMap;
COLORREF fromColor = RGB( 0,0,0 );
InitCommonControls();
v_ImageList = ImageList_Create(32, 32, ILC_MASK, 1, 1);
cMap.from = fromColor;
cMap.to = ::GetSysColor(COLOR_BTNFACE);
hBit = CreateMappedBitmap(hInst, IDB_CONSOLE, 0, &cMap, 1);
// hBit = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_CONSOLE));
consoleImg = ImageList_Add(v_ImageList, hBit, 0);
if (consoleImg == -1)
return NULL;
DeleteObject(hBit);
// [edit Franci Penov]
return v_ImageList;
}
然后,我创建了ToolBar,但是在Image函数上失败了。
HWND CreateToolBarButton(HWND hWndParent)
{
const int ImageID = 0;
const int numB = 1;
COLORREF iColor;
HWND hToolBar = CreateWindowEx(0,
TOOLBARCLASSNAME,
NULL,
WS_CHILD |TBSTYLE_LIST |TBSTYLE_FLAT | WS_VISIBLE,
0,0,0,0,
hWndParent,
NULL,
g_hInst,
NULL);
if (hToolBar == NULL)
return NULL;
HIMAGELIST ImgList = CreateToolBarImages(g_hInst);
if (ImgList == NULL)
MessageBox( hWndParent, L"No Tool Images", L"BOB", MB_OK );
// [edit Franci Penov]
return hToolBar;
}
我有什么想念的吗?
最佳答案
什么是“不起作用”。 CreateMappedBitmap用于加载具有颜色表的图像-这意味着它们具有
PNG表示您正在使用带有alpha通道的32bpp图像,这意味着您无法使用* MappedBitmap函数。
关于c++ - 尝试使用ImageList创建工具栏,但无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2597229/