Здравствуйте, уважаемые обитатели форума! Тут только узнал о функции masm32.lib BitmapFromFile, но в моём тестовом примере она, к сожалению, возвращает 0, т.е. ошибку. Пример мой в аттачменте. По сути что мне было нужно: загружать в окно картинки из файлов в сжатых форматах jpg и gif. Вот отрезок кода для тех, кому не хочется качать и распаковывать (заранее прошу прощения за ламерский вопрос): Код (Text): PaintProc proc hWnd:DWORD LOCAL hDC :DWORD LOCAL hOld :DWORD LOCAL memDC :DWORD LOCAL ps :PAINTSTRUCT invoke BeginPaint,hWnd,addr ps mov hDC,eax invoke CreateCompatibleDC,hDC mov memDC,eax invoke SelectObject,memDC,hBmp mov hOld,eax invoke BitBlt,hDC,0,0,470,378,memDC,0,0,SRCCOPY invoke SelectObject,hDC,hOld invoke DeleteDC,memDC invoke EndPaint,hWnd,addr ps ret PaintProc endp WndProc proc hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD .if uMsg==WM_CREATE invoke BitmapFromFile,addr szFileName .if eax==0 invoke MessageBox,hWnd,0,0,MB_OK .else mov hBmp,eax .endif .elseif uMsg==WM_PAINT invoke PaintProc,hWnd .elseif uMsg==WM_CLOSE invoke DestroyWindow,hWnd .elseif uMsg==WM_DESTROY invoke PostQuitMessage,0 .else invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .endif xor eax,eax ret WndProc endp 263267197__img.zip
ну во-первых, не указана версия масма, во-вторых, там вроде баг, попробуй либу из аттача _1016084219__imagelib5.zip
Avoidik Моя версия Masm32 v8.2 sp2. Мой пример почти передран с примера, поставленного с masm32: \masm32\examples\EXAMPLE9\CAR\ Обязательно разберусь с примером, что ты мне прислал, большой спасибо! Кажется как раз это мне было и нужно.
Бага заключается в двойном освобождении одного куска памяти. Прога грохается обычно на выходе. В ф-ции BitmapFromMemory (она вызывается из BitmapFromFile) надо закомментировать (или удалить) invoke CoTaskMemFree, pGlobal ; free task memory которая следует сразу за invoke CoUninitialize ; all done with COM После этого либо перекомпилить либу, либо просто взять и включить в свой исходник исправленные ф-ции живьём.
Как классно! Всё всё знают! В общем я просто взял либу, что дал Avoidik, перекомпилировал, разложил то, что имеется по папкам lib, include и этим пока остался доволен. Спасибо и cresta, возможно я так и сделаю, как ты сказал. Просто как-то странно, что такие достаточно часто востребованные функции до сих пор так и остались неисправленными, с багами в masm32 v8.2 sp2 (!). Надеюсь в следующем sp или новой версии этого больше не увидеть.
mc black Кстати, твой код рабочий Если бы ты проверил, почему BitmapFromFile возвращает ноль, например так: invoke BitmapFromFile,addr szFileName PrintError то в дебаговом окошке отобразилось бы: Не удается найти указанный файл. Надо было просто указать полный путь к файлу .jpg. Возможно потому, что имя файла преобразовывается в юникод перед вызовом OleLoadPicturePath, и тут возможно происходит накладка.