Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-45158
Вопрошающий.
2003-07-30 17:12
2003.08.14
Утечка памяти в собственной программе


14-44964
SPIRIT
2003-07-30 13:04
2003.08.14
Truble with fastreport


14-45060
Marser
2003-07-27 19:47
2003.08.14
Именинники 27 июля


14-44987
ZZ
2003-07-28 20:47
2003.08.14
Подскажите чего бы полезного скачать


14-45110
AllDontFire
2003-06-12 10:28
2003.08.14
Помогите с ExitProcess





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский