Re[2]: Засада с этими HDC контекстами, помогите plz..
От: Dylan  
Дата: 12.04.03 08:02
Оценка:
Здравствуйте, tim_, Вы писали:

D>Делал DC:=GetDC(0) — та же фигня!


_>Ну, это где-то что-то у вас не правильно, т.к. GetDC(0) вегда возвращает контекст экрана.

Чесно говоря не уверен.... Впрочем, может я и заблуждаюсь, я раскопал такой код в исходнике TCustomLabel, там контекст вывода лэйбла получают именно так...

_>Касательно вашего вопроса: а вы уверены, что этот самый Parent хранит в контексте себя любимого без всех компонентов, находящихся поверх него? Исследуйте повнимательней алгоритм реагирования TWinControl`а на событие WM_PAINT, а так же WM_ERASEBKGND. В первом случае вообще идет clipping всех регионов дочерних компонентов, т. е. те части TWinControla, которые не видны (находятся под дочерними компонентами) попросту не зарисовываются в обработчике самого Parenta. А вот второе сообщение иногда полезно вообще проигнорировать, т. к. из-за временного интервала между этими сообщениями всегда происходит мелькание изображения.

Спасибо — очень полезно. Честно говоря, мне следовало бы покапаться самому в этом (я так и сделаю), но щас надо срочно написать компонент, поэтому и гружу, еще раз спасибо.

_>Хотелось бы узнать, чисто из любопытства, зачем вам необходимо работать с невидимым изображением? Уж не для (полу)прозрачности ли?

Да нет, просто надо немного преобразовать кусок фона, на который ложится компонент.
А что если для прозрачности?

D>И еще, как заставить перерисоваться Parent окно в локальном TRect'e?


_>Parent.PaintTo(..);


Вот большое спасибо... — будет время — буду копаться сам в этом, а сейчас Ваша помощь более, чем своевременная.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.