Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.047 c
2-1130091967
_xroot
2005-10-23 22:26
2005.11.13
Атрибуты файла


2-1130072381
tmc
2005-10-23 16:59
2005.11.13
Переменные среды Windows и TIniFile.Create


14-1130101965
saNat
2005-10-24 01:12
2005.11.13
Поиск ошибки в проекте


4-1126693655
Still Swamp
2005-09-14 14:27
2005.11.13
Надо в CallBack API функции передать метод TObject


2-1130324508
serko
2005-10-26 15:01
2005.11.13
Отловить запуск другой программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский