После получения контекста устройства приложение может изменить любой его атрибут. Однако данные изменения не сохраняются, и когда приложение в следующий раз получит контекст устройства, его атрибуты будут иметь значения, установленные Windows по умолчанию.
Если необходимо сохранять изменения, вносимые приложением в контекст устройства, нужно добавить флаг CS_OWNDC к полю типа окна в структуре класса окна:
nWndClass->style = ... | CS_OWNDC;
Теперь все изменения, вносимые приложением в контекст устройства, сохраняются в структуре класса окна до уничтожения вами этого окна. Как правило, изменения атрибутов контекста устройства производят при поступлении приложению сообщения WM_CREATE. Использование флага CS_OWNDC оказывает действие только при получении контекста устройства функциями BeginPaint и GetDC.
GDI предоставляет возможность сохранить контекст устройства перед его изменением, а затем восстановить его. Для этого можно пользоваться функциями SaveDC и RestoreDC. Функция SaveDC используется для сохранения контекста устройства, а функция RestoreDC – для его восстановления. Ниже представлены примеры вызова данных функций:
nSaveDC (hDC); // Сохраняем контекст устройства
... // Изменение контекста устройства
RestoreDC (hDC,nSaveDC); // Восстанавливаем контекст устройства