Прозрачность bitmapа на кнопке ToolBarа

Тема в разделе "WASM.WIN32", создана пользователем Vlast, 12 янв 2008.

  1. Vlast

    Vlast New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    5
    Добавляю битмап на кнопку ToolBara, но не могу сделать его прозрачным. Как сделать чтобы определённый цвет в битмапе был прозрачен(например чтобы красный заменился на прозрачный)?
    Делаю так:
    Код (Text):
    1. invoke CreateWindowEx,WS_EX_TOOLWINDOW,addr clToolBar,addr clToolBar,WS_CHILD+CCS_NOPARENTALIGN+CCS_NORESIZE+TBSTYLE_LIST+TBSTYLE_FLAT+CCS_NODIVIDER,
    2. 8,16,108,22,hFrame,5,hInstance,NULL
    3. mov hToolBar,eax
    4. invoke ImageList_Create,16,16,ILC_COLOR32,4,0
    5. mov hImageList,eax
    6.  
    7. invoke LoadBitmap,hInstance,1
    8. invoke ImageList_AddMasked,hImageList,eax,0ffh
    9. invoke LoadBitmap,hInstance,2
    10. invoke ImageList_AddMasked,hImageList,eax,0ffh
    11. invoke LoadBitmap,hInstance,3
    12. invoke ImageList_AddMasked,hImageList,eax,0ffh
    13. invoke LoadBitmap,hInstance,4
    14. invoke ImageList_AddMasked,hImageList,eax,0ffh
    15. invoke SendMessage,hToolBar,TB_SETBUTTONSIZE,0,0f00fh
    16.  
    17. invoke SendMessage,hToolBar,TB_SETIMAGELIST,0,hImageList
    18. invoke SendMessage,hToolBar,TB_BUTTONSTRUCTSIZE,sizeof TBBUTTON,0
    19. invoke SendMessage,hToolBar,TB_ADDBUTTONS,4,addr tbutton
    20. invoke ShowWindow,hToolBar,SW_SHOWNORMAL
     
  2. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    код у тебя такой, будто ты не понимаешь, какая функция что делает.
    зачем у тебя столько вызовов ImageList_AddMasked, когда достаточно одного?
    что это за параметр такой 0F00Fh в TB_SETBUTTONSIZE? это же должен быть MAKELONG (dxButton, dyButton), а у тебя получается совершенно некорректный параметр.
     
  3. Vlast

    Vlast New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    5
    Да в коде я разбирусь ты подскажи мне как добиться прозрачности
     
  4. Vlast

    Vlast New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    5
    Ой там я и правда ошибся, должно быть
    Код (Text):
    1. invoke SendMessage,hToolBar,TB_SETBUTTONSIZE,0,0f000fh
    Что означает 16 ширина, 16 высота
     
  5. Vlast

    Vlast New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    5
    Jupiter
    Вот сумничать нашел время а подсказать нихрена! Неужели я один это делаю? Смешно как-то. Напиши те кто-нибудь любой пример.
     
  6. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    если ты не умеешь читать ответы - это твоя проблема.
    если ты считаешь, что 0Fh - это 16, а не 15 - это тоже твоя проблема. учи матчасть.
    если ты не отвечаешь на прямо поставленные вопросы - твоя проблема.

    где ответ?

    посмеялся - теперь подумай, что ты только вопрошаешь. тестовый проект за тебя писать?
    тебе от меня (или от другого участника форума) нужен готовый пример в виде исходников + скомпилированного рабочего exe?

    мой тебе ответ: флаг ILC_MASK в вызове ImageList_Create:
    Код (Text):
    1. invoke  ImageList_Create,16,16,ILC_COLOR16 or ILC_MASK,19,0
    но твоя манера просить о помощи... школьник чтоль?
     
  7. Vlast

    Vlast New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    5
    Jupiter
    Да блин торопился просто и написал 16 в место 15, ну бывает, Использовал много вызовов ImageList_AddMasked из за того что битмапы отдельные были, сейчас всё собрал в один.
    Но зачем тебе обращать внимание на то, что не относится к вопросу? Огромное тебе спасибо за помощь. Вопрос решён.