Форум: "Потрепаться";
Текущий архив: 2003.08.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c