Получение частного контекста устройства (DC) дисплея 


Приложение, выполняющее многочисленные операции рисования в рабочей области своего окна должно использовать частный контекст устройства (DC) дисплея. Чтобы создавать этот тип DC, приложение должно установить константу CS_OWNDC  в члене  style структуры WNDCLASS при регистрации класса окна. После регистрации класса окна, приложение получает дескриптор, идентифицирующий частный контекст устройства (DC) дисплея, вызывая функцию GetDC.

Пример ниже показывает, как создать  дисплейный частный контекст устройства (DC).

#include <windows.h>    // требуется для всех базирующихся на Windows 
    // приложениях
#include <stdio.h>      // заголовочный файл ввода/вывода периода 
    // исполнения библиотеки C
#include <string.h>     // заголовочный файл для строк периода 
    // исполнения библиотеки C
#include "dc.h"         // определяется этой программой
// Прототипы функций.
 
BOOL InitApplication(HINSTANCE); 
long FAR PASCAL MainWndProc(HWND, UINT, UINT, LONG); 
 
// Глобальные переменные 
 
HINSTANCE hinst;       // дескриптор текущего экземпляра 
HDC hdc;               // дескриптор контекста устройства дисплея 
 
BOOL InitApplication(HINSTANCE hinstance) 
{ 
    WNDCLASS  wc; 
 
    // Заполним структуру класса окна параметрами, 
    // описывающими главное окно. 
 
    wc.style = CS_OWNDC;         // Флажок частного DC
    wc.lpfnWndProc = (WNDPROC) MainWndProc; 
 
    wc.cbClsExtra = 0; 
    wc.cbWndExtra = 0; 
    wc.hInstance = hinstance; 
 
    wc.hIcon = LoadIcon((HINSTANCE) NULL, 
        MAKEINTRESOURCE(IDI_APPLICATION)); 
 
    wc.hCursor = LoadCursor((HINSTANCE) NULL, 
        MAKEINTRESOURCE(IDC_ARROW)); 
 
    wc.hbrBackground = GetStockObject(WHITE_BRUSH); 
    wc.lpszMenuName =  "GenericMenu"; 
    wc.lpszClassName = "GenericWClass"; 
 
    // Зарегистрируем класс окна и возвратим результирующий код. 
 
    return RegisterClass(&wc); 
} 
 
LRESULT APIENTRY MainWndProc( 
        HWND hwnd,           // дескриптор окна
        UINT message,        // тип сообщения
        WPARAM wParam,       // дополнительная информация
        LPARAM lParam)       // дополнительная информация 
{ 
 
    PAINTSTRUCT ps;          // структура для закрашивания
 
    // Извлекаем дескриптор идентифицирующий частный DC. 
 
    hdc = GetDC(hwnd); 
 
    switch (message) 
    { 
        case WM_PAINT: 
              BeginPaint(hwnd, &ps); 
 
        // Рисуем и раскрашиваем, используя частный DC.  

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz