· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› BitMap

Посл.отвђт Сообщенiе


Дата: Апр 27, 2004 20:33:00

Как проще всего отобразить битмап в статике?
Пытался сделать на основе примеров из масма32, но не вышло :(


Дата: Апр 27, 2004 21:00:54

Загрузить битмап из ресурсов (LoadImage) и отправить в статик сообщением STM_SETIMAGE.


Дата: Апр 27, 2004 21:02:55 · Поправил: bogrus

Если битмап будет в ресурсах , то можно так :
invoke LoadImage,hInst,ID_ресурса,IMAGE_BITMAP,0,0,NULL 
invoke SendMessage,hStatic,STM_SETIMAGE,IMAGE_BITMAP,eax
Если битмап будет в файле , то нужно так :
.data
szImg db "image.bmp",0
.code
invoke LoadImage,hInst,offset szImg,IMAGE_BITMAP,0,0,LR_LOADFROMFILE
invoke SendMessage,hStatic,STM_SETIMAGE,IMAGE_BITMAP,eax


Дата: Апр 28, 2004 20:20:56

Спасибо за ответы. Но это если создать статик через CreateWindow и брать из еах хэндл.
А если статик уже есть в ресурсах как быть?
Если не сложно, приведите, пожалуйста, пример.


Дата: Апр 28, 2004 20:35:19

тогда GetDlgItem его.. ;-)


Дата: Апр 28, 2004 20:37:50 · Поправил: bogrus

Или послать его ... (статик)
На SendDlgItemMessage :)
invoke LoadImage,hInst,ID_bmp_ресурса,IMAGE_BITMAP,0,0,NULL
invoke SendDlgItemMessage,hDlg,ID_статика,STM_SETIMAGE,IMAGE_BITMAP,eax


Дата: Апр 28, 2004 20:53:34

Код у меня такой:
.if uMsg==WM_CREATE

        invoke GetDlgItem,hWin,2
        mov hStatImage, eax
              	
      	invoke LoadImage,hInstance,700,IMAGE_BITMAP,0,0,NULL 
	
	invoke SendMessage,hStatImage,STM_SETIMAGE,IMAGE_BITMAP,eax

В ресурсах:
500 ICON "1.ico"
700 BITMAP "1.bmp"
CONTROL "#500",2,"Static",0x50000203,5,0,142,76,0x00000000

Почему-то не пашет :(
Подскажите что не так.


Дата: Апр 28, 2004 21:03:20

Цепляй сюда весь исходник, а то мне что-то кодить чтоб проверить влом ;-)
Кстати, можно заранее положить битмат в нужное место окна ещё при вёрстке rc скрипта и тогда ничего грузить не нужно будет :-)


Дата: Апр 28, 2004 21:12:23 · Поправил: bogrus

Если hWin у тебя хендл диалога , то вместо WM_CREATE поставь WM_INITDIALOG .

Asterix прав , закинь лучше исходник , не всё понятно

Доцепляю :
DlgProc	PROC hDlg:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD

     .if uMsg == WM_INITDIALOG
invoke GetDlgItem,hDlg,2
mov hStatImage, eax
invoke LoadImage,hInstance,700,IMAGE_BITMAP,0,0,NULL
invoke SendMessage,hStatImage,STM_SETIMAGE,IMAGE_BITMAP,eax
...


Дата: Апр 28, 2004 21:52:07 · Поправил: bogrus

Замени эту строку
CONTROL "#500",2,"Static",0x50000203,5,0,142,76,0x00000000
на эту
CONTROL "#700",2,"Static",0x5000020E,5,0,142,76,0x00000000
Убери LoadImage,SendMessage и получишь самый простой способ , о котором говорил Asterix


Дата: Апр 28, 2004 23:09:19

bogrus
К слову, этот способ не работает на win16. А вместо "#700" можно прописать просто 700 (без кавычек).


Дата: Апр 29, 2004 09:19:03

Спасибо всем большое!
Сделал битмап при верстке rc-скрипта.
CONTROL 700,2,"Static",0x5000020E,5,0,142,76,0x00000000

В моём случае так действительно проще.
Ещё раз всем спасибо :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.078