![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отменить прорисовку child windows-ов?
deema © (2004-03-03 21:21:00)День добрый. Я отрисовываю окно вручную по WM_PAINT и дочерние окна отрисовывать после этого не надо (иначе будет все жутко мигать). Как отменить прорисовку дочерних окон? Или убрать WM_PAINT из их очередей?
А межет, еще как-нибудь можно?
Спасибо
GrayFace (2004-03-05 16:32:00) [1]Дык можно всех детей на одну процедуру посадить. Один из парамеьров - хэндл окна. Создай 2 массива: хэндлы и оконные процедуры и сравнивай с параметром процедуры.
deema (2004-03-04 21:52:00) [2]Он будет прорисован, но в свое время и на виртуальном битмэпе. Потом, я на этом битмэпе рисую еще кучу всего и потом просто рисую этот битмэп на DC окна. Все дочерние окна уже на этой битмэпе отрисованы. Поэтому-то и не хотел я просто лишать их обработки WM_PAINT. Кстати, рисование на битмэпе я взял из исходников TWinControl при Doublebuffered=true; А дочерние окна после всего еще раз себя перерисовывают, и что даже хуже перестирают (WM_ERASEBGND), а это дает мигание, от которого я хотел бы избавиться.
DVM (2004-03-04 08:59:00) [3]
> deema (04.03.04 08:26) [3]
А зачем вообще создавать дочерний контрол, если он не будет прорисован?
deema (2004-03-04 08:26:00) [4]Я тоже WS_CLIPCHILDREN делал, не помогает, они все равно потом отрисосываются. Я даже вручную их удалял из clip region, тоже без результата. К сожалению, OWNERDRAW я их сделать не могу, равно как и подменять их оконные процедуры и там ловить и отменять WM_PAINT. Вернее, могу, но геморроя не хочу - кучу процедур писать, присваивать их каждому child-у...
Как-нибудь можно сообщение из очереди удалить?
LLL (2004-03-03 23:00:00) [5]Попробуй
Params.Style := Params.Style + WS_CLIPCHILDREN;
wicked (2004-03-03 21:27:00) [6]сделать их ownerdraw и не рисовать...