![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TWinControl.PaintTo() и т.п. [D7, WinXP]
StriderMan © (2009-03-25 14:58:00)Задача: Есть TWinControl , у которого нет парента, просто болтается в памяти. Нужно отрисовать его в нужной канве на нужном месте.
Пробовал тупо .PaintTo(). Получаю Control '' has no parent window, что вобщем-то логично.
Далее вместо WinControl'а заюзал невидимый TForm - ошибок нет, но рисует пустоту, пока форма невидима, а мне показывать ее никак не надо.
Далее пробовал решить проблему при помощи BitBlt:
wdc := GetWindowDC(fLayer.Handle);
try
Canvas.Lock;
try
BitBlt(Canvas.Handle, 0, 0, Width, Height, wdc, 0, 0, SRCCOPY);
finally
Canvas.Unlock;
end;
finally
ReleaseDC(fLayer.Handle, wdc);
end;
опять же отрисовывается нормально только если форма видима, при этом в копируемый прямоугольник захватываются другие формы, частично или полностью перекрывающие нашу формочку. Т.е. получается снимок области экрана как его видит пользователь.
что можно еще попробовать?
StriderMan (2009-03-26 15:08:00) [1]
> А если на время отрисовки ему устанавливать parent - какой будет эффект?
мигнет и пропадет, когда парента отберем.
решил проблему так: Нашел им парента в виде панельки, сныканой под всеми так, что ее не видно. Знатный бутерброд получился, но работает нормально :)
ЗЫ: не подумайте, что я извращенец, я редактор форм доделываю :)
ЮЮ (2009-03-26 09:18:00) [2]
> А если на время отрисовки ему устанавливать parent - какой
> будет эффект?
Тогда он сам отрисуется, а автору это не нужно :)
Cobalt (2009-03-25 22:37:00) [3]А если на время отрисовки ему устанавливать parent - какой будет эффект?