Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.14;
Скачать: CL | DM;

Вниз

WM_PAINT и inherited   Найти похожие ветки 

 
WMag ©   (2003-06-14 23:26) [0]

Здравствуйте!
Вопрос такой, нужен ли inherited в обработчике WM_PAINT. Компонент основан на TCustomControl. Вроде везде ставят, но я пробовал и ставить и убирать, а разницы не заметил. Чем мне будет чревато, если я его уберу?

Ну и заодно такой вопросик. Есть CompatibleDC и CompatibleBitmap. При операции SelectObject(CompDC, CompBitmap) DC указывает на месторасположения Bitmap"а или создает новую область и туда все копирует?


 
jack128 ©   (2003-06-14 23:37) [1]

чем черевато в данном случае незнаю, а вообще ИМХО нужно ставить inherited везде, где нету специальных сооброжений чтобы его не ставить. А чем отсутствие inherited черевато вообще можно проверить например так. Создай компонент и "забудь" в конструкторе поставить inherited. Проинсталируй этот компонент и положи его на форму, сообщи о результатах ;-)



 
WMag ©   (2003-06-15 01:54) [2]

Что будет в конструкторе и так понятно. Меня интересовало именно в обработчике. Причем в конструкторе пишут
inherited Create(AOwner: TComponent);

а в WM_PAINT ставится только
inherited;

Поэтому и непонятно. Пытался проследить (F7), куда пойдет дальше, он просто его проскакивает. Да и если бы передавался куда-нить дальше, то вроде как нужно ему параметры передавать. Ан ничего такого не делается в исходниках.


 
jack128 ©   (2003-06-15 12:54) [3]

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


 
reonid ©   (2003-06-15 13:02) [4]

inherited в обработчике сообщения WM_PAINT приводит к вызову унаследованного обработчика с тем же аргументом.
(Обработчики сообщений - на самом деле динамические методы
с селектором, равным идентификатору сообщения).

В твоём случае это TCustomControl.WMPaint.
Он, в свою очередь, вызывает TWinControl.WMPaint, который делает много чего, в том числе рисует дочерние контролы.
Вызывать унаследованный обработчик следует всегда,
кроме тех случаев, когда тебе нужно избавиться от
стандартной обработки.

А вообще говоря, в TCustomControl для отрисовки специально введён метод Paint, и имеет смысл перекрыть именно его.

На счёт второго вопроса - объекты ГДИ при выборе в контекст
устройства не копируются (за исключением регионов).



Страницы: 1 вся ветка

Текущий архив: 2003.08.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
14-45125
pirat
2003-06-08 15:26
2003.08.14
Как


14-45035
1232343
2003-07-28 12:05
2003.08.14
Как временно отключить интернет от компьютера?


14-45154
Alik$
2003-07-30 21:22
2003.08.14
Где найти компоненты помогите ?


14-45055
Viktor Kushnir
2003-07-28 08:32
2003.08.14
Delphi 6 Service Packs - Где найти?


14-45139
pasha676
2003-07-31 10:12
2003.08.14
Ищу книжку.