Russian Qt Forum

Компиляторы и платформы => Visual C++ => Тема начата: root от Март 31, 2004, 17:56



Название: Чем отличается onDraw от OnPaint
Отправлено: root от Март 31, 2004, 17:56
Господа, чем отличается процедуры в Visual C++ onDraw() от onPaint()


Название: Чем отличается onDraw от OnPaint
Отправлено: Злой от Апрель 01, 2004, 05:59
Правильнее сказать, не в Visual C++, а в MFC ;)

OnPaint() - это обработчик события WM_PAINT
OnDraw() - это виртуальная функция в классе CView, которая вызывается каркасом при обработке WM_PAINT и при выводе на печать.


Название: Чем отличается onDraw от OnPaint
Отправлено: Greyer от Апрель 01, 2004, 11:30
Цитата: "Злой"
OnDraw() - это виртуальная функция в классе CView, которая вызывается каркасом при обработке WM_PAINT и при выводе на печать.

Не только в классе CView, а так же COleConrol и ещё каких то. В MSDN написано, что вызов WM_PAINTа заканчивается вызовом OnDraw - для прорисовки контрола (COleControl), но если контрол не активен, то OnPaint не вызывается и идёт прямой вызов OnDraw (если только я правильно перевёл  :) ).
В OnDraw прорисовываются контролы, т.е. например при создании ActiveX или переделки каких то обычны контролов (кнопок и т.д.)именно эту ф-цию и приходится расписывать.
Перерисовка окон (вызов WM_PAINT'а) происходит при: создании, изменении размеров, перемещении, минимизации или ввостановлении, отображении данных из открываемого файла, и перемещении, изменении, или выборе части отображаемых данных.