Проблемы с загрузкой bitmapа...

Тема в разделе "WASM.BEGINNERS", создана пользователем sheef_ad, 26 дек 2009.

  1. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    есть в уроках Iczelion'а урок простой битмап. У него нет ошибки в коде? Просто я перенес весь код с сообщения WM_PAINT, а грузится этот самый битмап нехочет. Вроде все сделал и в ресурсы добавил файл
    (#define IDB_FON 300
    IDB_FON BITMAP "foto\fon.bmp")
    и загрузил
    (IDB_FON equ 300
    ...
    invoke LoadBitmap,hInstance,IDB_FON
    mov hBitmap2,eax)
    скопировал весь код с урока для wm_paint, а картинка не грузится. Что тут еще может быть, не подскажите?
     
  2. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Проверьте что файл действительно находиццо в ресурсах. Откройте ваш EXE в редакторе ресурсов и посмотрите все ли верно.
     
  3. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Есть .... Я в ужасе...
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.900
    sheef_ad
    Посмотри аттач
     
  5. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Не понял? А что это?
     
  6. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Ну што Ж...

    a) Оригинальный пример работает?

    b) Трассируйте это место в отладчеге. Чему равно hInstance? Что возвращаеццо после API call?
     
  7. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    А, всмысле сама картинка? На месте, открывается нормально. Самое плохое что я пробую другие картинки, которые уже успешно грузятся в дочерний статик - в основное окно нехотят тоже грузится.
     
  8. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Да, работает собака.

    Та чтоб его... Зпускаю в отладчике, а он даже недоходит до этого места. Циклится вот здесь:


    Код (Text):
    1.     .while TRUE
    2.      invoke GetMessage, ADDR msg,NULL,0,0
    3.      .break .if (!eax)
    4.      invoke TranslateMessage, ADDR msg
    5.      invoke DispatchMessage, ADDR msg
    6.     .endw
    То есть даже вндпроц незапускает. Предупреждаю - я этой штукой еще слабо умею пользоватся. (ollyDbg)
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.900
    sheef_ad
    аттач в смысле прикрепленный файл, но Хром не хотел прикреплять пробую с Оперы
     
  10. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Это урок Iczelion'а? Он у маня есть, и успешно работает. Только на него моя авира не ругается - а на ваш аттач ругается. Вы уж извините - я его в карантин на всяк случай...
     
  11. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Эх... ладно, буду сам думать... с утра уже, а то среди ночи никак....
    Спасибо всем за старания помочь...
     
  12. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.900
    sheef_ad
    Это переделанный урок Iczelion'a -- там есть исходник можешь перекомпилировать, если авира ругается на мой exe. Общий смысл переделки -- картинка грузится не через BeginPaint, CreateCompatibleDC, SelectObject, GetClientRect, BitBlt, DeleteDC, EndPaint, а непосредственно в момент создания окна через LoadImageA и CreatePatternBrush как кисть передается в RegisterClass, также при выводе на экран можно отказаться от ShowWindow и UpdateWindow и не устраивать постоянные проверки вернуло ли GetMessage ноль, а прямо заменить PostQuitMessage на ExitProcess
     
  13. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Откройте файло в отладчиге, указатель команд должен быть на EntryPoint (== файл исполняеццо с начала).

    Найдите место (а) которое вы хотите исследовать (это не должно быть трудно в случае небольшой программы).

    Установите BPM X (Breakpoints -> HardwareBreakPoints -> On Execution) или просто Breakpoint (int 3h).

    Запустите программу на выполнение (CTRL-F9 или F9).

    Если все верно, то при выполнении нужного кода отладчег должен перехватить (получить) управление и можно изучать код.
     
  14. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    интересно ... я смотрел в тхт файле - щас голова плохо соображает что бы понять - ситуация усугубляется тем, что у вас "чистый" асм, а я пока только на Масмовских константах пишу (хотя насвежую голову разобрать непроблема - просто чуть больше времени потрачу)..
     
  15. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Ох... возьму этот прием на вооружение. Я уже просто скопировал весь пример в свой файл - свои функции подобавляю и думаю будет работать (это уже завтра) - если нет - ждите мое нытье снова:))