Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите разобраться с FastDIB [D5, Win95/98, WinME, NT4, Win2k, WinXP]


SimpleUser ©   (2003-04-01 20:47:00) 

Пытаюсь поместить снимок экрана в FastDIB следующим образом:

{--}
VAR
FD:TFastDIB;
BEGIN
FD:=TFastDIB.create;
FD.SetSize(Screen.Width,Screen.Height,24);
BitBlt(FD.Handle,0,0,Screen.Width,Screen.Height,GetWindowDC(GetDesktopWindow),0,0,SRCCOPY);
END;

{-}

В чем тут проблема?


i-C3H7OH   (2003-04-02 15:31:00) [1]

точно-точно
FD.hDC :HDC;
а
FD.Handle :HBITMAP;


Stexen   (2003-04-02 12:09:00) [2]

и деструктор не забудь


Stexen   (2003-04-02 12:08:00) [3]

Дак ты че делаешь то, там же у него не хэндел надо брать а HDC, то есть
в твоем случае
BitBlt( FD.hDC,0,0,Screen.Width,Screen.Height,GetWindowDC(0),0,0,SRCCOPY);


SimpleUser   (2003-04-01 21:39:00) [4]

Все добавил, а результат такой-же.
Может надо вместо FD.Handle другой его handle передавать, потому что если использовать просто canvas объекта Image:
BitBlt(Image1.canvas.Handle,0,0,Screen.Width,Screen.Height,GetWindowDC(GetDesktopWindow),0,0,SRCCOPY), то снимок делается, а с FastDIB непонятно.
Еще заметил один глюк у себя:
Если делать снимок экрана на Image и потом сохранить его на диске, то FastDIB не может его загрузить.


i-C3H7OH   (2003-04-01 21:14:00) [5]

1. забыл деструктор
2. GetWindowDC(GetDesktopWindow) - создало HDC, а кто удалять будет (ReleaseDC)
3. вместо GetDesktopWindow передавай 0


Наверх

Титульная страница Поиск, карта сайта Написать письмо