powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как через API установить/поменять картинку на кнопке Toolbar
6 сообщений из 6, страница 1 из 1
Как через API установить/поменять картинку на кнопке Toolbar
    #36660320
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну допустим подогнал я ему нормальный ImageList
Код: plaintext
1.
   hTBar = FindWindowEx(Toolbar1.hwnd,  0 &, "ToolbarWindow32", vbNullString)
    lRes = SendMessage(hTBar, TB_SETIMAGELIST,  0 , ByVal m_hImlTB)
Если к примеру до этого (в конструкторе) был привязан VB-ImageList, по произойдет замена картинок на кнопках на новые. (Косвенное подтверждение, что все идет по плану.)

Только я не понимаю как заменить/назначить картинку на кнопке через API
Из чтения майкрософта вроде надо TB_CHANGEBITMAP использовать

Код: plaintext
1.
2.
3.
4.
Private Const WM_USER = &H400
Private Const TB_CHANGEBITMAP = (WM_USER +  43 )
   Call SendMessageLong(hTBar, TB_CHANGEBITMAP,  3 , ByVal  5 ) 
'???
   Call SendMessageLong(Toolbar1.hwnd, TB_CHANGEBITMAP,  3 , ByVal  5 ) 

Но не работает...почему-то. Что не так? Мож там не 3 , 5 а какие-то более сложные конструкции нужны типа makelong/dword/etc? Но примера что-т толкового не нашел.
По идее если vb-ImageList изначально не привязывать, то еще сабклассинг какой-нибудь нужен чтоб ImageList не убивался, но ...для Toolbar ощущение что мож. и не нужен.
...
Рейтинг: 0 / 0
Как через API установить/поменять картинку на кнопке Toolbar
    #36660731
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TB_SETBUTTONINFO
...
Рейтинг: 0 / 0
Как через API установить/поменять картинку на кнопке Toolbar
    #36661123
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TB_SETBUTTONINFO Message
wParam
Button identifier.

TB_CHANGEBITMAP Message
wParam
Command identifier of the button that is to receive a new bitmap.

Вот этот identifier как получить
из
Toolbar1.Buttons(1).
Toolbar1.Buttons(3).

Ибо возникло ощущение что wParam=1 ,3 (ну или 0, 2 если zero-based) не есть правильный ответ на данный вопрос.
...
Рейтинг: 0 / 0
Как через API установить/поменять картинку на кнопке Toolbar
    #36661364
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, волне правильный, для ocx idCommand равно индексу.
...
Рейтинг: 0 / 0
Как через API установить/поменять картинку на кнопке Toolbar
    #36661433
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
да я сам чувствую что ход мыслей вроде как верный.
Рабочий пример нужен...не могу найти, тогда станет ясно где я портачу
Пример кажется я видел (когда осбсуждали что Toolbar может иметь 3 ImageList-а)...
нады поискать еще...
...
Рейтинг: 0 / 0
Как через API установить/поменять картинку на кнопке Toolbar
    #36661520
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тво..Вот этот пример.

http://www.glyphlab.com/articles/vb_toolbar_m.html

http://www.glyphlab.com/articles/vb_toolbar_m/vb_toolbar_sample.zip

Ну, собственно я стормозил. Ничего этого вообще не надо.
Из того что VB-ImageList не поддерживает 32-битные иконки с альфа-каналом еще не следует что он не поддерживает 24-битные битмапы, а этого в случае Toolbar более чем достаточно. По крайней мере именно битмапы в ресурсах (с маскColor) я намеревался внедрять.
Т.е. VB-ImageList в данном случае необходимо и достаточно.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как через API установить/поменять картинку на кнопке Toolbar
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]