Приложение выполняет рисование в окне в разное время: при первом создании окна, при изменении размера окна, при перемещении окна из-за другого окна, при минимизации или максимальном увеличении окна, при отображении данных из открытого файла, при прокрутке, изменении или выборе части отображаемых данных.
Система управляет такими действиями, как перемещение и изменение размера окна. Если действие влияет на содержимое окна, система помечает затронутую часть окна как готовую к обновлению и при следующей возможности отправляет WM_PAINT сообщение в процедуру окна. Сообщение является сигналом для приложения, чтобы определить, что необходимо обновить, и выполнить необходимый рисунок.
Некоторые действия управляются приложением, например отображение открытых файлов и выбор отображаемых данных. Для этих действий приложение может пометить для обновления части окна, затронутой действием, что приводит к отправке WM_PAINT сообщения при следующей возможности. Если действие требует немедленной обратной связи, приложение может рисовать во время выполнения действия, не дожидаясь WM_PAINT. Например, типичное приложение выделяет область, выбранную пользователем, а не ожидает следующего сообщения WM_PAINT для обновления области.
Во всех случаях приложение может рисовать в окне сразу после его создания. Для рисования в окне приложение сначала должно получить дескриптор контекста устройства отображения для окна. В идеале приложение выполняет большую часть операций рисования во время обработки WM_PAINT сообщений. В этом случае приложение получает контекст устройства отображения, вызывая функцию BeginPaint . Если приложение выполняет рисование в любое другое время, например из WinMain или во время обработки сообщений клавиатуры или мыши, оно вызывает функцию GetDC или GetDCEx для получения контроллера домена дисплея.
Разработчики Windows имеют различные варианты создания приложений, работающих в Windows. В этом модуле представлены платформы пользовательского интерфейса Windows, доступные для разработки Windows. Он также содержит рекомендации по выбору оптимальной платформы для вашего приложения.