пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Поняття контексту пристрою. Застосування контекстів пристрою. Обробка повідомлення WM_PAINT.

В программах Windows, прежде чем вывести что-либо на экран, необходимо получить контекст устройства, и весь вывод производить через него. Контекст устройства - это достаточно условное название, не отражающее сути понятия. На самом деле, это структура данных, обеспечивающая связь графических функцый с драйвером конкретного устройства. Эта структура определяет состояние драйвера, и способ вывода графики. Например, в MFC можно получить контекст клиентской области окна, создав экземпляр класса CClientDС. Конструктор этого класса принимает один параметр - указатель на объект окна, обычно подставляется this. После создания этого объекта можно выводить графику в окно, используя функции-члены класса.

Сообщение WM_PAINT

Windows устроена таким образом, что за обновление содержимого окна отвечает программа. Например, если часть окна была перекрыта другим окном, а затем вновь открыта, или минимизированное окно было восстановлено, то окну посылается сообщение WM_PAINT. В ответ на него окно должно обновить свою клиентскую область.

Прототип обработчика WM_PAINT следующий:

          afx_msg void OnPaint();

Макрокоманда называется ON_WM_PAINT(). Рассмотрим простой обработчик, который выводит строку "Привет" в клиентскую область по координатам x = 10, y = 20:

          afx_msg void CMainWin::OnPaint()

          [

          CPaintDC paintDC(this);

          paintDC.TextOut(10, 20, CString("Привет"));

          ]

В обработчике WM_PAINT нужно всегда пользоваться классом CPaintDC, который представляет собой класс клиентской области, но предназначенный для использования именно с этим сообщением.

Функция TextOut() предназначена для вывода текста в контекст устройства (в данном случае - в окно). При ее использовании по умолчанию первые два параметра определяют координаты верхнего левого угла текстовой строки.

 


21.06.2015; 22:24
хиты: 48
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь