| Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых) |
| eXeL@B —› Программирование —› Простая графика на асме |
| . 1 . 2 . >> |
| Посл.ответ | Сообщение |
|
|
Создано: 19 апреля 2007 15:25 · Личное сообщение · #1 Привет всем. Вопрос новичка! Как нарисовать на форме простую бмп ? Делал так:
invoke BeginPaint,hwnd,ADDR ps mov hdc,EAX invoke ImageList_Create,149,102,ILC_COLOR16,0,0 mov hImList,EAX invoke LoadBitmap,hInstance,IM_WAIT mov hBmp,EAX invoke ImageList_Add,hImList,hBmp,NULL invoke ImageList_Draw,hImList,0,hdc,8,179,ILD_NORMAL invoke DeleteObject,hBmp invoke EndPaint,hwnd, ADDR ps invoke SendMessage,hwnd,WM_PAINT,0,0 не прорисовывает почему то.. Смотрел в отладчике: вроде все ф-ии возвращают валидные значения, но.. Неужели Image_List можно использовать только для контролов? Но ведь написано: "The ImageList_Draw function draws an image list item in the specified device context." Помогите понять ошибку! ----- radio uno in ibisa ... ![]() |
|
|
Создано: 19 апреля 2007 16:01 · Личное сообщение · #2 InitResources proc
----- Тут не могла быть ваша реклама ![]() |
|
|
Создано: 19 апреля 2007 17:07 · Личное сообщение · #3 lord_Phoenix invoke BitmapFromResource, hInstance, 9999 ; background hInstance чего здесь должен быть? Может у меня в этом и ошибка.. Я указывал на Instance окна.. Хотя написано: ; get a resource handle (address) and resource length from the executable invoke FindResource, hModule, ResNumber, ADDR szImage значит правильно.. ?
----- radio uno in ibisa ... ![]() |
|
|
Создано: 19 апреля 2007 17:21 · Личное сообщение · #4 |
|
|
Создано: 19 апреля 2007 17:33 · Личное сообщение · #5 Да, с hInstance разобрался, всё правильно было. Беда вот где: FindResource возвращает ноль: 00401232 |. 68 56314000 PUSH SerFile.00403156 ; /ResourceType = "IMAGE" 00401237 |. FF75 0C PUSH DWORD PTR SS:[EBP+C] ; |ResourceName = FA6 0040123A |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hModule = 00400000 (SerFile) 0040123D |. E8 DC060000 CALL <JMP.&kernel32.FindResourceA> ; \FindResourceA FA6 = 4006 = номер картинки. Картинка в ресурсе есть.. Остальные параметры тоже правильные. Не пойму че не так.. ----- radio uno in ibisa ... ![]() |
|
|
Создано: 19 апреля 2007 17:35 · Личное сообщение · #6 |
|
|
Создано: 19 апреля 2007 17:54 · Поправил: Icelot · Личное сообщение · #7 lord_Phoenix пишет: last_error какой? RESOURCE_TYPE_NOT_FOUND ты прав в ресурсном файле было BITMAP - исправил на IMAGE. FindResource отработала.
Но картинки всё равно нету
Посмотрел дальше.. SelectObject выдаёт 0 в EAX. Так и должно быть? Извиняюсь, просто msdn нету под рукой.. А winapi_rus.hlp Виста не хочет открывать. Устарел длшя неё формат.... ----- radio uno in ibisa ... ![]() |
|
|
Создано: 19 апреля 2007 17:57 · Личное сообщение · #8 |
|
|
Создано: 19 апреля 2007 18:06 · Личное сообщение · #9 |
|
|
Создано: 19 апреля 2007 18:19 · Личное сообщение · #10 |
|
|
Создано: 19 апреля 2007 18:29 · Поправил: Icelot · Личное сообщение · #11 |
|
|
Создано: 19 апреля 2007 19:25 · Личное сообщение · #12 |
|
|
Создано: 19 апреля 2007 20:20 · Личное сообщение · #13 |
|
|
Создано: 19 апреля 2007 20:58 · Личное сообщение · #14 |
|
|
Создано: 20 апреля 2007 07:28 · Личное сообщение · #15 |
|
|
Создано: 20 апреля 2007 07:35 · Поправил: Icelot · Личное сообщение · #16 |
|
|
Создано: 20 апреля 2007 07:52 · Личное сообщение · #17 |
|
|
Создано: 20 апреля 2007 07:54 · Личное сообщение · #18 |
|
|
Создано: 20 апреля 2007 11:44 · Личное сообщение · #19 Продолжение темы.. Если картинки разные и прорисовывать их надо несколько раз. Как правильно обновить прямоугольник? Картинка обновляется если прямоугольник с ней окажется в невидимой области или программу свернуть - развернуть. Т.е. он становится invalidate, как я понимаю? Пробовал RedrawWindow может параметры не те, но не обновляет. ----- radio uno in ibisa ... ![]() |
|
|
Создано: 20 апреля 2007 12:07 · Личное сообщение · #20 |
|
|
Создано: 20 апреля 2007 12:16 · Поправил: Icelot · Личное сообщение · #21 Bitfry пишет: Например вызвать Invalidaterect Это первое, что я попробовал. Invalidaterect и UpdateWindow посылают окну сообщение WM_PAINT в котором и происходит прорисовка картинки. Не помогает. added: Разобрался. Просто сам наворочил много, вот и запутался. InvalidateRect. ----- radio uno in ibisa ... ![]() |
|
|
Создано: 20 апреля 2007 18:26 · Личное сообщение · #22 Вот пример на фасм для загрузки JPEG и я не юзаю прорисовку через WM_PAINT а просто ассоциирую STATIC с нужным битмапом. Так проще) Данный пример может (не проверял но должен) грузить еще BMP, GIF, ICO, WMF, и EMF картинки и отрисовывать их. 51b1_20.04.2007_CRACKLAB.rU.tgz - JPEG.rar
![]() |
|
|
Создано: 20 апреля 2007 18:28 · Личное сообщение · #23 |
|
|
Создано: 20 апреля 2007 22:24 · Личное сообщение · #24 |
|
|
Создано: 20 апреля 2007 22:31 · Личное сообщение · #25 |
|
|
Создано: 20 апреля 2007 22:59 · Личное сообщение · #26 lord_Phoenix пишет: BitBlt, как у меня А Глянул пример КеКвана. Имхо ассоциировать с контролом конечно можно, но.. не знаю.. По мне так лучше прорисовать. Хотя конечно с нынешеими мощными компами такие мелочи уже не имеют значения. Просто я изучаю асм на лету т.с. Пишу и решаю возникшие проблемы. Хочется докопаться до всего. Вот завтра буду смотреть, как BitBlt работает (суть ясна, но не помешает).
Кстати если тема интересна не только мне вот http://www.wasm.ru/srclist.php?list=3 исходники с васма. Оч много полезного
----- radio uno in ibisa ... ![]() |
|
|
Создано: 20 апреля 2007 23:15 · Личное сообщение · #27 вот что то захотелось сделать на из jpeg'ов кино :D часть 1 6c07_20.04.2007_CRACKLAB.rU.tgz - JPEGANIM.part1.rar
![]() |
|
|
Создано: 20 апреля 2007 23:16 · Личное сообщение · #28 |
|
|
Создано: 20 апреля 2007 23:19 · Личное сообщение · #29 |
|
|
Создано: 21 апреля 2007 06:52 · Личное сообщение · #30 |
| . 1 . 2 . >> |
| eXeL@B —› Программирование —› Простая графика на асме |
| Эта тема закрыта. Ответы больше не принимаются. |


? Делал так:



?


Для печати