вопрос по Toolbar'у и битмапу к нему

Тема в разделе "WASM.BEGINNERS", создана пользователем elestrago, 4 май 2009.

  1. elestrago

    elestrago New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2009
    Сообщения:
    56
    В общем наткнулся на проблему создания битмапа для тулбара.
    Суть проблемы в том что цвет который должен стать прозрачным не становится таковым если просто тупо пытатся сделать битмап в простом "форточкином паинте", ну а если допустим сделать битмап в Paint.Net и залить его белым цветом то все пойдет на ура, но тут вылазиют ньюансы....

    1) если только в новый паинт попытатся вставить картинку скопированную в буфер обмена и сохранить её, тогда опять заранее определенный цвет не становится прозрачным...
    2) а если открыть рабочий пустой битмап в форточкином паинте и попытатся вставить туда скопированную картинку то картинка вставляется искаженной, и вообще с другим цветом....
    3) перерисовывать попиксельно иконки на новый работающий битмап не очень то сильно охото....

    Не обясните ли новичку как же правильно делать битмапы для тулбара и какие инструменты для этого использовать?

    Кстати еще у меня вылазиет ошибка ERROR_NOT_ENOUGH_MEMORY после того как я вызываю:
    Код (Text):
    1.    
    2.            push offset tbab
    3.     push    11
    4.     push    TB_ADDBITMAP
    5.     push    hToolBar
    6.     call    SendMessageA@16
    но как не странно после этой ошибки все работает нормально битмапы загружаются... , как от нее избавится?

    Тулбар создаю вот так:
    Код (Text):
    1.    
    2.            push     0
    3.     push    hInst
    4.     push    0
    5.     push    dword ptr [ebp+08h]
    6.     push    40
    7.     push    500
    8.     push    0
    9.     push    0
    10.     push    WS_VISIBLE or WS_CHILD or TBSTYLE_FLAT
    11.     push    0
    12.     push    offset ToolBarClass
    13.     push    0
    14.     call    CreateWindowExA@48
    15.     mov hToolBar,eax
    16.  
    17.     push    0
    18.     push    sizeof TBBUTTON
    19.     push    TB_BUTTONSTRUCTSIZE
    20.     push    hToolBar
    21.     call    SendMessageA@16
    22.  
    23.     mov     ecx,16
    24.            mov      eax,16
    25.            shl      eax,16
    26.            mov      ax, cx
    27.            mov  bSize, eax
    28.    
    29.     push    bSize
    30.     push    0
    31.     push    TB_SETBITMAPSIZE
    32.     push    hToolBar
    33.     call    SendMessageA@16    
    34.     push    COLOR_BTNFACE
    35.     call    GetSysColor@4
    36.     mov colorMap.To, eax
    37. ;------------RGB-----------------  
    38.     xor        eax, eax
    39.     mov      ah, 255    
    40.     mov      al, 255  
    41.     rol        eax, 8
    42.     mov      al, 255    
    43. ;----------------------------------
    44.     mov colorMap.From,eax
    45.  
    46.     push    1
    47.     push    offset colorMap
    48.     push    0
    49.     push    800
    50.     push    hInst
    51.     call    CreateMappedBitmap@20
    52.                
    53.     mov tbab.nID,eax
    54.     mov tbab.hInst,0
    55.     push    offset tbab
    56.     push    11
    57.     push    TB_ADDBITMAP
    58.     push    hToolBar
    59.     call    SendMessageA@16
    60.    
    61.     push    bSize
    62.     push    0
    63.     push    TB_SETBUTTONSIZE
    64.     push    hToolBar
    65.     call    SendMessageA@16
    66.  
    67.     push    offset stToolbar
    68.     push    15
    69.     push    TB_ADDBUTTONS
    70.     push    hToolBar
    71.     call    SendMessageA@16
     
  2. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    1) ImageList_Create c флагом ILC_MASK
    2) ImageList_Add
    3) TB_SETIMAGELIST
    3) TB_ADDBUTTONS (поле iBitmap структуры TBBUTTON - это индекс битмапа в имаглисте)
     
  3. elestrago

    elestrago New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2009
    Сообщения:
    56
    murder Спасибо попробую ;)