![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
При копировании экрана ее удаётся захватить окно со свойством For [D7, WinXP]
dmitry_12_08_73 © (2009-06-07 18:10:00)Как скопировать окно со свойством FormStyle = fsStayOnTop при копировании экрана функцией
BitBlt (bm.Canvas.Handle, 0, 0, Width, Height, WinDC, Left, Top, SRCCOPY)?
Пример нормальной работы: нажатие клавиши PrtScr копирует это окно.
Спасибо!
Eraser (2009-06-26 17:55:00) [1]> [6] dmitry_12_08_73 © (22.06.09 23:20)
CAPTUREBLT
axis_of_evil (2009-06-25 12:52:00) [2]возможно скопировать часть десктопа, занимаемую этим окном
dmitry_12_08_73 (2009-06-22 23:20:00) [3]Я разобрался точнее: окно не копируется BitBlt, если AlphaBlend = true. А как его скопировать в этом случае?
dmitry_12_08_73 (2009-06-10 22:57:00) [4]спасибо всем за ответы, буду пробовать
Ins (2009-06-09 11:48:00) [5]
> BitBlt(Canvas.Handle, 0, 0, Width, Height, GetWindowDC(GetDesktopWindow),
> 0, 0, SRCCOPY)
Не нужно так делать, результат функции GetWindowDC еще и освобождать нужно с помощью ReleaseDC. Так что правильнее будет сначала получить в переменной дескриптор контекста устройства, потом BitBlt, а потом освободить этот контекст.
Юрий Зотов (2009-06-07 18:36:00) [6]А так копируется весь экран, и тоже без пробем:
procedure TForm1.FormDblClick(Sender: TObject);
begin
FormStyle := fsStayOnTop;
BitBlt(Canvas.Handle, 0, 0, Width, Height, GetWindowDC(GetDesktopWindow), 0, 0, SRCCOPY)
end;
Юрий Зотов (2009-06-07 18:33:00) [7]Все прекрасно копируется:
procedure TForm1.FormDblClick(Sender: TObject);
begin
FormStyle := fsStayOnTop;
BitBlt(Canvas.Handle, 0, 0, Width, Height, GetWindowDC(Handle), 0, 0, SRCCOPY)
end;
Ищите ошибку.
Palladin (2009-06-07 18:13:00) [8]А что, не должен?