STM_SETIMAGE и STM_SETICON

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

STM_SETIMAGE и STM_SETICON

Сообщение drronnie » 18.10.2007 (Чт) 11:43

Господа, такая проблема, значит ставлю хук:
Код: Выделить всё
lv_Hook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHook, App.hInstance, GetCurrentThreadId())

затем вызываю стандартный MsgBox и в функции MsgBoxHook делаю следующее
Код: Выделить всё

...
        hIconWnd = FindWindowEx(wParam, 0&, "Static", vbNullString)
        Call SendMessage(hIconWnd, STM_SETICON, lv_hIcon, ByVal 0&)
...

всё замечательно работает... но что делать если мне нужно вставить вместо стандартной иконки не иконку а bitmap? В той же функции ставлю статику стиль SS_BITMAP, затем в SendMessage передаю сообщение STM_IMAGE с параметрами IMAGE_BITMAP и HBITMAP моей картинки:
Код: Выделить всё

        hIconWnd = FindWindowEx(wParam, 0&, "Static", vbNullString)
        SetWindowLong hIconWnd, GWL_STYLE, GetWindowLong(hIconWnd, GWL_STYLE) Xor SS_ICON
        SetWindowLong hIconWnd, GWL_STYLE, GetWindowLong(hIconWnd, GWL_STYLE) Or SS_BITMAP
        Call SendMessage(hIconWnd, STM_SETIMAGE, IMAGE_BITMAP, lv_hBmp)

Однако вместо того, чтобы появиться битмапу - сжимается статик (т.е. его left, top, right, bottom становятся равны 11)
Написал на VC - работает, т.е. STM_SETIMAGE - ставит статику битмап...

Подскажите, где я ошибаюсь? Может статику стиль забыл какой-то поставить, может в SendMessage с параметрами что-то не так...

И видется мне ещё одно альтернативное решение: можно HBITMAP преобразовать в HICON и тогда проблема решиться сама собой... но как это сделать?
Компиляция - перевод словесного поноса в машинный код.

udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Сообщение udpn » 18.10.2007 (Чт) 14:47

в поиске по форуму поищи "перевод BMP в иконку". если есть кодомазохистские наклонности (как к меня), разбери пример с VBAccelerator по пережиму в иконку с альфаканалом
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 77

    TopList  
cron