Главная страница
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.018 c
14-44997
Basja
2003-07-29 10:49
2003.08.14
Опять хабы и т.п.


14-45082
Kviz
2003-06-15 13:29
2003.08.14
Как обновить(перерисовть) экран.


14-45069
Spawn
2003-06-03 22:00
2003.08.14
Перехват API


14-44962
galleleo
2003-07-30 14:57
2003.08.14
Есть небольшой заказ!


14-44973
Delf
2003-07-26 15:42
2003.08.14
Оптимальный раскрой(упаковка)