Рисование без сообщения WM _ Paint

Несмотря на то, что приложения выполняют большинство операций рисования во время обработки сообщения WM _ Paint , иногда более эффективно нарисовать приложение непосредственно в окне, не полагаясь на сообщение WM _ Paint . Это может быть полезно, когда пользователю требуется немедленный отзыв, например при выборе текста и перетаскивании или изменении размера объекта. В таких случаях приложение обычно рисуется при обработке сообщений клавиатуры или мыши.

Для рисования в окне без использования сообщения WM _ Paint приложение использует функцию GetDC или жетдцекс , чтобы получить контекст устройства отображения для окна. В контексте устройства отображения приложение может нарисоваться в окне и избежать атак на другие окна. Когда приложение завершит рисование, оно вызывает функцию релеаседк , чтобы освободить контекст устройства отображения для использования другими приложениями.

При рисовании без использования сообщения WM _ Paint приложение обычно не делает это окно недействительным. Вместо этого он рисуется таким образом, что он может легко восстановить окно и удалить рисунок. Например, когда пользователь выбирает текст или объект, приложение обычно выводит выделение путем инвертирования того, что уже есть в окне. Приложение может удалить выборку и восстановить исходное содержимое окна, просто переменив его.

Приложение отвечает за тщательное управление любыми изменениями, которые он делает в окне. В частности, если приложение рисует выделение и возникает промежуточное сообщение WM _ Paint , приложение должно убедиться, что любой рисунок, сделанный во время сообщения, не повреждает выбор. Чтобы избежать этого, многие приложения удаляют выбор, выполняют обычные операции рисования, а затем восстанавливают выбор после завершения рисования.