2013-04-16 2 views
1

Я пытаюсь изучить приложение MFC doc-view. Я начал с создания простого приложения для просмотра изображений. Для этого я получил класс вида из класса CScrollView и переопределил функцию draw().Использование функции OnPaint() в MFC

Я хотел знать, когда использовать функцию OnPaint() и как она связана с функцией draw().

ответ

2

Вам не нужны никакие функции OnPaint и OnDraw в том же виде. Согласно Microsoft's documentation:

Когда представление становится недействительным, Windows отправляет ему сообщение WM_PAINT. Функция обработчика OnPaint представления отвечает на сообщение, создавая объект-объект-объект класса CPaintDC и вызывает функцию члена OnDraw вашего вида. Обычно вам не приходится писать переопределяющую функцию обработчика OnPaint.

Разделив код чертежа на свою собственную функцию, каркас позволяет повторно использовать его для рисования экрана и печати.

+0

Переопределение 'OnPaint' почти всегда неверно для представлений - и когда это правильно, оно обычно включает в себя продвинутые вещи. Например, вы можете переопределить оба параметра, когда вы пытаетесь выполнить двойную или тройную буферизацию, и вам нужно жонглировать контекстами устройств. Как указано в документации, сохраните рисунок внутри 'OnDraw'. –

+0

Спасибо за ваш ответ! – dearvivekkumar

+0

В моем тестовом приложении я переопределил функцию Draw(), которая загружает изображение и рисует его. Теперь я хочу добавить в приложение функцию увеличения/уменьшения масштаба. Для этого я добавил кнопку панели инструментов. Я не понимаю, как это сделать. Что мне нужно сделать в обработчике панели инструментов. Мне нужно изменить объект CImage класса view и вызвать окно обновления. Будет ли это правильно или есть лучший способ для этого. – dearvivekkumar

Смежные вопросы