hdc = GetDC(hWnd); // Начать графический вывод
// графический вывод
. . . . . . . . . . .
ReleaseDC(hWnd, hdc); // Закончить графический вывод
Разница между первым и вторым способом будет пояснена ниже.
Параметр hWnd – описатель того окна, в котором требуется перерисовка. Описатель контекста позволяет программе рисовать только в пределах клиентской области окна, описатель которого использовался при его создании. В каждом окне выделяют несколько областей:
рабочая область – вся область, занимаемая окном на экране;
неклиентская область – включает стандартные элементы окна, которые, в общем случае, отрисовываюся операционной системой: рамка, строка заголовка, кнопки закрыти, минимизации и т.п., меню;
клиентская область – вся оставшаяся от неклиентской рабочая область окна.
Описатель контекста используется во всех функциях, связанных с графическим выводом. Приведем примеры функций, непосредственно связаных с рисованием:
Rectangle(hdc, 20, 20, 100, 300);// рисует прямоугольник с указанными координатами верхней левой и нижней правой точками;
Ellipse(hdc, 20, 20, 100, 300); // рисует эллипс, вписанный в прямоугольник с указанными координатами;
LineTo(hdc, 20, 20); // рисует линию из текущих координат пера в указанные (понятие пера будет раскрыто позже в этой лекции).
Как видно из приведенных примеров, первый параметр у всех графических функций – описатель контекста устройства.