Пример использования:
Code: |
// bitmap SetWindowLong(hwndButton,GWL_STYLE,GetWindowLong(hwndButton,GWL_STYLE) or BS_BITMAP); Button_SetImageEx(hwndButton,LoadBitmap(hInstance,'IDB_BITMAP1'),IMAGE_BITMAP);
// иконка SetWindowLong(hwndButton,GWL_STYLE,GetWindowLong(hwndButton,GWL_STYLE) or BS_ICON); Button_SetImageEx(hwndButton,LoadIcon(hInstance,'IDI_ICON1'),IMAGE_ICON);
|
Автор: Krid
Code: |
{©Drkb v.3(2007): www.drkb.ru} function Button_SetImageEx(hwndCtl:HWND; Img:HGDIOBJ; ImgType:integer; // IMAGE_BITMAP или IMAGE_ICON cx:integer = 16; cy:integer = 16):Integer; const BCM_FIRST = $1600; BCM_SETIMAGELIST = $0002;
BUTTON_IMAGELIST_ALIGN_LEFT = 0; BUTTON_IMAGELIST_ALIGN_RIGHT = 1; BUTTON_IMAGELIST_ALIGN_TOP = 2; BUTTON_IMAGELIST_ALIGN_BOTTOM = 3; BUTTON_IMAGELIST_ALIGN_CENTER = 4;
type TButtonImageList=record himl : HIMAGELIST; // normal, hot, pushed, disabled, focused margin : TRECT; // отступы uAlign : DWORD; // выравнивание end;
var hIconBlend:HICON; bi:TButtonImageList; begin Result:=0; if not (ImgType in [IMAGE_BITMAP,IMAGE_ICON]) then exit;
ZeroMemory(@bi, sizeof(bi)); bi.himl := ImageList_Create(cx,cy,ILC_COLOR16 or ILC_MASK,4,0); bi.margin.Left:=10; bi.uAlign := BUTTON_IMAGELIST_ALIGN_LEFT;
if (ImgType=IMAGE_BITMAP) then begin ImageList_Add(bi.himl,Img,0); // Normal ImageList_Add(bi.himl,Img,0); // hot ImageList_Add(bi.himl,Img,0); // pushed end else begin ImageList_AddIcon(bi.himl,Img); // Normal ImageList_AddIcon(bi.himl,Img); // hot ImageList_AddIcon(bi.himl,Img); // pushed end;
// disabled hIconBlend := ImageList_GetIcon(bi.himl,0,ILD_BLEND50 or ILD_TRANSPARENT); ImageList_AddIcon(bi.himl,hIconBlend); DestroyIcon(hIconBlend);
// focused if (ImgType=IMAGE_BITMAP) then ImageList_Add(bi.himl,Img,0) else ImageList_AddIcon(bi.himl,Img);
result:=SendMessage(hwndCtl,BCM_FIRST + BCM_SETIMAGELIST,0,LPARAM(@bi)); if (result=0) then begin ImageList_Destroy(bi.himl); result := SendMessage(hwndCtl,BM_SETIMAGE,ImgType,Img) end; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!