Основы компьютерной графики для программистов 59
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
Третья функция в нашей процедуре, ReleaseDC, выполняет освобождение оконного
идентификатора от контекста устройства. Эта функция специально предназначена для
оконных контекстов устройств, и первым из двух параметров у нее идет идентификатор
окна. Последняя функция
DeleteDC(hdc) удаляет контекст устройства и освобождает
ресурсы операционной системы связанные с ним.
Рисовать с помощью функций Windows API можно также и на других оконных
элементах Windows, например, на поверхности самой кнопки
Button1, которая, с точки
зрения операционной системы, является просто одним из окон. Для этого в процедуре
надо вместо параметра
Form1.Handle использовать Button1.Handle. Сам экран или
поверхность рабочего стола Windows также имеет оконный идентификатор. Это
означает, что для рисования на полном экране можно воспользоваться нашей
процедурой. Для этого нужно подставить вместо параметра
Form1.Handle значение 0,
которому равен идентификатор окна рабочего стола Windows.
Замечание. Подключение функций Windows API в приложениях Delphi делается с
помощью интерфейсного модуля Windows.pas. В предыдущем примере нам не
пришлось специально подключать этот модуль, так как предложение
uses, которое
генерируется автоматически, уже содержит указание на модуль Windows.pas. Можете
проверить это самостоятельно, заглянув в текст модуля Unit1.pas из предыдущего
примера.
Создание и отображение окна с использованием функций
Windows API.
Создание окна и показ его на экране в Windows происходит в три этапа.
1.
Регистрация класса окна с помощью функции RegisterClass;
2.
Создание окна с помощью функции CreateWindow;
3.
Показ окна на экране с помощью функции ShowWindow.
Далее рассмотрим пример, с помощью которого убедимся, что кнопка на окне Windows
сама является окном. Для этого создадим необычную кнопку с характерной
особенностью окна - строкой заголовка. Описание функции создания окна
CreateWindow на языке программирования С выглядит немного устрашающе.
Действительно, в документации имеется обширное описание параметров этой функции.
HWND CreateWindow(
LPCTSTR lpClassName, //указатель на зарегистрированное имя
//класса окна
LPCTSTR lpWindowName, //указатель на имя окна
DWORD dwStyle, //стиль окна
int x, //расположение окна по горизонтали
int y, //расположение окна по вертикали
int nWidth, //ширина окна
int nHeight, //высота окна
HWND hWndParent, //идентификатор (handle - хендл)
//родительского окна или окна-владельца
HMENU hMenu, //идентификатор оконного меню или
//дочернего окна
HANDLE hInstance, //идентификатор экземпляра приложения
LPVOID lpParam //указатель на данные для создания окна