есть в уроках 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, а картинка не грузится. Что тут еще может быть, не подскажите?
Проверьте что файл действительно находиццо в ресурсах. Откройте ваш EXE в редакторе ресурсов и посмотрите все ли верно.
Ну што Ж... a) Оригинальный пример работает? b) Трассируйте это место в отладчеге. Чему равно hInstance? Что возвращаеццо после API call?
А, всмысле сама картинка? На месте, открывается нормально. Самое плохое что я пробую другие картинки, которые уже успешно грузятся в дочерний статик - в основное окно нехотят тоже грузится.
Да, работает собака. Та чтоб его... Зпускаю в отладчике, а он даже недоходит до этого места. Циклится вот здесь: Код (Text): .while TRUE invoke GetMessage, ADDR msg,NULL,0,0 .break .if (!eax) invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg .endw То есть даже вндпроц незапускает. Предупреждаю - я этой штукой еще слабо умею пользоватся. (ollyDbg)
Это урок Iczelion'а? Он у маня есть, и успешно работает. Только на него моя авира не ругается - а на ваш аттач ругается. Вы уж извините - я его в карантин на всяк случай...
Эх... ладно, буду сам думать... с утра уже, а то среди ночи никак.... Спасибо всем за старания помочь...
sheef_ad Это переделанный урок Iczelion'a -- там есть исходник можешь перекомпилировать, если авира ругается на мой exe. Общий смысл переделки -- картинка грузится не через BeginPaint, CreateCompatibleDC, SelectObject, GetClientRect, BitBlt, DeleteDC, EndPaint, а непосредственно в момент создания окна через LoadImageA и CreatePatternBrush как кисть передается в RegisterClass, также при выводе на экран можно отказаться от ShowWindow и UpdateWindow и не устраивать постоянные проверки вернуло ли GetMessage ноль, а прямо заменить PostQuitMessage на ExitProcess
Откройте файло в отладчиге, указатель команд должен быть на EntryPoint (== файл исполняеццо с начала). Найдите место (а) которое вы хотите исследовать (это не должно быть трудно в случае небольшой программы). Установите BPM X (Breakpoints -> HardwareBreakPoints -> On Execution) или просто Breakpoint (int 3h). Запустите программу на выполнение (CTRL-F9 или F9). Если все верно, то при выполнении нужного кода отладчег должен перехватить (получить) управление и можно изучать код.
интересно ... я смотрел в тхт файле - щас голова плохо соображает что бы понять - ситуация усугубляется тем, что у вас "чистый" асм, а я пока только на Масмовских константах пишу (хотя насвежую голову разобрать непроблема - просто чуть больше времени потрачу)..
Ох... возьму этот прием на вооружение. Я уже просто скопировал весь пример в свой файл - свои функции подобавляю и думаю будет работать (это уже завтра) - если нет - ждите мое нытье снова)