Вы можете дать возможность пользователю рисовать линии с помощью мыши при наличии у вас оконной процедуры рисования пока обрабатывается сообщение WM_MOUSEMOVE. Система отправляет сообщение WM_MOUSEMOVE оконной процедуре всякий раз, когда пользователь перемещает курсор внутри окна. Для рисования линий оконная процедура может извлечь контекст устройства (DC) отображения и рисовать линию в окне между текущими и предыдущими позициями курсора.
В примере ниже, оконная процедура готовится к рисованию, когда пользователь нажимает и удерживает левую кнопку мыши (отправка сообщения WM_LBUTTONDOWN). Поскольку пользователь перемещает курсор внутри окна, оконная процедура получает ряд сообщений WM_MOUSEMOVE. Для каждого сообщения оконная процедура чертит линию, устанавливая связь предыдущей позиции и текущей позиции. Чтобы нарисовать линию, процедура использует функцию GetDC, чтобы извлечь контекст устройства (DC) отображения; затем, как только рисование завершается и перед тем, как произойдет возвращение значения из сообщения, процедура использует функцию ReleaseDC, чтобы освободить контекст устройства отображения. Как только пользователь отпускает кнопку мыши, оконная процедура сбрасывает флажок и останавливает рисование (которое отправляет сообщение WM_LBUTTONUP).
|
Приложение, которое делает возможным рисование, как в этом примере, обычно делает запись или точек, или линий для того, чтобы они могли быть перерисованы всякий раз, когда окно обновляется. Рисующие программы часто используют контекст устройства памяти и связанный точечный рисунок, чтобы сохранить линии, которые рисовались при помощи использования мыши.