Как поместить картинку на кнопку средствами WinAPI

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

Как поместить картинку на кнопку средствами WinAPI

Сообщение XairOn » 12.05.2006 (Пт) 11:56

Здравствуйте господа, подскажите пожалуйста, как можно поместить картинку на кнопку вместо текста
я пробовал вот так:
Код: Выделить всё
Option Explicit

Private Const IMAGE_BITMAP As Long = 0
Private Const BM_SETIMAGE As Long = &HF7&
Private Const LR_LOADFROMFILE As Long = &H10

Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal dwImageType As Long, ByVal dwDesiredWidth As Long, ByVal dwDesiredHeight As Long, ByVal dwFlags As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Private Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long) As Long

Dim img As Long

Private Sub Form_Load()
    img = LoadImage(App.hInstance, "c:\kartinka.bmp", IMAGE_BITMAP, 42, 45, LR_LOADFROMFILE)
    SendMessage Command1.hwnd, BM_SETIMAGE, IMAGE_BITMAP, img
End Sub

этот код почему-то у меня не работает. Помогите пожалуйста разобраться в чем тут дело.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.05.2006 (Пт) 13:57

Почему не устраивает помещать картинку на кнопку средствами VB?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 12.05.2006 (Пт) 14:59

2 GSerg Потому что я пишу интерфейс на чистом API (и честно говоря вообще на Си) так что воспользоваться стандартными средствами не представляется возможным.

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 13.05.2006 (Сб) 15:21

Лови событие WM_PAINT
Отрисовывай кнопку через олдвинпроц или через WM_PRINT
Потом рисуешь свою картинку через GDI
Красный, но студийный.

http://www.rs-creative.com
Alex_Black@rs-creative.com

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 13.05.2006 (Сб) 16:00

2 AlexBlack Нет уж спасибо, всё гораздо проще, просто при создании кнопки нужно указать стиль BS_BITMAP :wink: Только вот тут другая проблема возникает, кнопка теряет стиль оформления XP и становится плоской, как-то это не красиво смотрится, когда весь интерфейс программы имеет стиль XP и среди этого всего, какая-то плоская, серая кнопка (


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList