Форум: "WinAPI";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
ВнизРабота с памятью Найти похожие ветки
← →
vvvaaa (2005-09-08 19:51) [0]Подскажите пожалуста что в не так, я не правильно обращаюсь с кучей или с указателем?
hMem:HWND;
p:pointer;
...
hMem:=GetProcessHeap;
p:=HeapAlloc(hMem,0,8256);
hFile:=CreateFile("c:\test.bin",GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0);
ReadFile(hFile,p^,8256,t,nil);
hbmp:=CreateCompatibleBitmap(hDC1,w,h);
SetBitmapBits(hbmp,8256,p);
BitBlt(hdc1,10,10,w+10,h+10,hbmp,0,0,0);
← →
alpet © (2005-09-09 10:55) [1]vvvaaa (08.09.05 19:51)
Отладчиком надо воспользоваться.
← →
n0name (2005-09-09 11:02) [2]А что не так?
← →
vvvaaa (2005-09-09 12:16) [3]> [2]
BltBtn рисует черный квадрат, и я не понимаю данные в память не загружаются
ReadFile(hFile,p^,8256,t,nil);
или не читаются
SetBitmapBits(hbmp,8256,p);
← →
Digitman © (2005-09-09 12:19) [4]какого ляда ты не анализируешь рез-ты , возвращаемые WinAPI-ф-циями ? религия не позволяет что ли ?
← →
vvvaaa (2005-09-09 13:20) [5]Удалено модератором
← →
alpet © (2005-09-09 13:25) [6]vvvaaa (09.09.05 13:20) [5]
Не понятно, зачем вызывать BitBlt без указания кода растровой операции. Подозреваю что последний параметр должен быть SRCCOPY.
← →
Digitman © (2005-09-09 13:31) [7]
> vvvaaa (09.09.05 13:20) [5]
> вижу уже наверно двадцатую твою реплику и все они одинаковые
постоянство во мнениях - не худшее, думаю, человеческое качество)
> тебе видимо IQ не позволяет высказываться более конструктивно
ну а тебе, видимо, он самый не позволяет сообразить, что коль скоро ты используешь ф-цию, а не процедуру, нужно получить (а не игнорировать !) результат, ею возвращаемый
> стественно я проверяю в отладчике и слежу за всеми возвращаемыми
> результатами
малацца.
не забудь всем пользователям своего софта поставлять в дистрибутиве свою версию Делфи, чтобы пользователи могли сделать то же самое при возникновении проблем, которые обязательно возникнут при таком твоем подходе (мол, раз у меня под отладчиком все в порядке, то уж у пользователей и подавно будет все в порядке с вызовом этой ф-ции)
← →
vvvaaa (2005-09-10 12:33) [8]>коль скоро ты используешь ф-цию, а не процедуру, нужно получить
>(а не игнорировать !) результат, ею возвращаемый
Интересно зачем, если он мне не нужен.
Из асм (условно):
call AnyFunctin
mov result,eax
Все функции возращают результат в eax,edx, eax:edx, и очень реко ecx,ebx. Это регистры общего назначения, их обработка производится только если это надо в программе.
>SRCCOPY
Да это я пропустил, но теперь картинка вообще не рисуется. Подскажите что ещё не так
← →
alpet © (2005-09-10 14:15) [9]vvvaaa (10.09.05 12:33) [8]
Ну и наконец главная ошибка - функция BitBlt принимает в параметрах контексты устройства (Device Context) - исходный и назначения. У тебя же вместо исходного контекста используется почему-то описатель растра (HBITMAP вместо HDC). Вобщем потрудись создать так-же совместимый контекст (CreateCompatibleDC), и "прицепить" к нему собсвенно растр (SelectObject). А вообще для разрешения таких вопросов существует справка, которую можно было и почитать.
← →
vvvaaa (2005-09-11 10:18) [10]> alpet © (10.09.05 14:15) [9]
Спасибо, но я уже это понял, за три дня нашел исходник функции загрузки битмапа из файла.
>существует справка, которую можно было и почитать.
В справке написано (последний параметр SetBitmapBits):
lpBits - Points to an array of bytes that contain color data for the specified bitmap.
Ну я и указывал на массив данных цвета, а оказалось на до указывать на полную структуру битмапа (HEADER, INFO ...). Вот и верь теперь справкам
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c