Прозрачные изображения (32bpp) на Toolbar-е
От: unreg_flex  
Дата: 25.11.04 09:27
Оценка:
Эксперты помогите!
Никак не могу заставить WinXP правильно отображать 32-х битные изображения.
Ужо чего только не пробовал!
Она настырно не хочет интерпретировать альфа канал!
Изображения я создавал с помощью FreeHand9 & PhotoShop5.5.
Можно указать прозрачный цвет (1 bit alpha), но в этом случае края выглядят коряво,
а нужно как в explorer'е (8 bit alpha)!
Подскажите что не так plz (четвертый день парюсь)!

Вот мой код:

-------------

HWND CreateToolbarSimply(
HINSTANCE hInstance,
HWND hwndOwner,
LPTBBUTTON lpButtons,
LPTBRBUTTON lpRButtons,
int nButtons,
int nButtonHeight,
int nButtonWidth) {

HWND hwndToolbar;
HBITMAP hBitmap,hHotBitmap;
HIMAGELIST hImageList,hHotImageList;
int nIndex;


hwndToolbar=CreateWindowEx(
WS_EX_TOOLWINDOW,
TOOLBARCLASSNAME,
NULL,
TBSTYLE_FLAT|TBSTYLE_TOOLTIPS|
CCS_TOP|
WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,
0,0,0,0,
hwndOwner,
NULL,
hInstance,
NULL);

SendMessage(
hwndToolbar,
TB_BUTTONSTRUCTSIZE,
(WPARAM)sizeof(TBBUTTON),
0);

SendMessage(
hwndToolbar,
TB_SETMAXTEXTROWS,
1,
0);

SendMessage(
hwndToolbar,
TB_SETBITMAPSIZE,
0,
(LPARAM)MAKELONG((WORD)nButtonWidth,(WORD)nButtonHeight));

SendMessage(
hwndToolbar,
TB_SETBUTTONWIDTH,
0,
(LPARAM)MAKELONG((WORD)nButtonWidth,(WORD)nButtonHeight));

hImageList=ImageList_LoadImage(
hInstance,
(LPCTSTR)lpRButtons->uBitmaps,
nButtonWidth,
0,
0,
IMAGE_BITMAP,
LR_DEFAULTCOLOR|LR_CREATEDIBSECTION);

hHotImageList=ImageList_LoadImage(
hInstance,
(LPCTSTR)lpRButtons->uHotBitmaps,
nButtonWidth,
0,
0,
IMAGE_BITMAP,
LR_DEFAULTCOLOR|LR_CREATEDIBSECTION);

SendMessage(
hwndToolbar,
TB_SETIMAGELIST,
0,(LPARAM)hImageList);

SendMessage(
hwndToolbar,
TB_SETHOTIMAGELIST,
0,(LPARAM)hHotImageList);

SendMessage(
hwndToolbar,
TB_ADDBUTTONS,
(UINT)nButtons,
(LPARAM)lpButtons);

ShowWindow(hwndToolbar,SW_SHOW);

return hwndToolbar;
}

---------------
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.