- •WIN API функции в
- •WIN API функции в Delphi
- •WIN API функции в Delphi
- •WIN API функции в Delphi
- •Декларирование WIN API функций
- •Изменение стандартной экранной формы. Работа с регионами
- •Изменение стандартной экранной формы. Работа с регионами
- •Применение регионов
- •Применение регионов
- •API функции для создания
- •API функции для создания
- •API функции для создания
- •Дополнительные функции для работы с регионами
- •Дополнительные функции для работы с регионами
- •Дополнительные функции для работы с регионами
- •Назначение региона окну
- •Пример
WIN API функции в
Delphi. Работа с регионами
(областями)
1
WIN API функции в Delphi
Современные программы можно представлять как совокупность программных уровней, каждый из которых проводит собственную работу, заключающуюся в повышении уровня производимых операций.
Низший уровень вводит инструменты, помогающие работать с оборудованием; следующий уровень помогает определять сложные последовательности вызова функций. Практически в каждом современном программном продукте Delphi есть около десятка последовательных уровней абстракции.
2
WIN API функции в Delphi
Абстракция оборудования и различных протоколов вводится в виде библиотек API (Application Program Interface), такую абстракцию называют базовой.
Win API – это набор функций, предоставляемых операционной системой каждой программе. Эти функции находятся в стандартных динамически компонуемых библиотеках (Dynamic Linked Library, DLL), таких как kernel32.dll, user32.dll, gdi32.dll. Эти файлы находятся в директории Window\System.
3
WIN API функции в Delphi
DLL-библиотеки могут подключаться к программе статически и динамически.
В первом случае программа «освобождает» DLL только при завершении, во втором освобождение может произойти в любой момент. Если после освобождения DLL оказывается, что её больше не использует ни одна программа, она выгружается из памяти. Так как стандартные библиотеки используются самой системой, они всегда находятся в памяти, и поэтому использование динамического подключения бессмысленно.
4
Декларирование WIN API функций
WIN API функции уже описаны в соответствующих модулях, достаточно упомянуть их имена в разделе uses.
5
Изменение стандартной экранной формы. Работа с регионами
В плане функциональности стандартный прямоугольный вид экранной формы самый удобный, но бывают ситуации, когда возникает необходимость или просто прихоть использовать экранные формы иного внешнего вида.
Графический объект Windows – область (Region) формируется из простейших геометрических фигур, таких как эллипс, многоугольник и т.п. С помощью областей можно значительно разнообразить графическое оформление внешнего вида программ.
6
Изменение стандартной экранной формы. Работа с регионами
В Windows регионом называется прямоугольник, полигон или эллипс (либо комбинация двух или более этих фигур), которые могут быть заполнены, нарисованы, инвертированы, обрамлены и могут использоваться для определения местонахождения курсора.
С точки зрения Windows, регион является обыкновенным объектом GDI (Graphics Device Interface – интерфейс, который Windows использует для рисования 2D графики), задаваемым дескриптором HRGN.
7
Применение регионов
Регион позволяет задать на канве область определенной формы. procedure TForm1.RebuildWindowRgn;
var
MyRgn, OldRgn : HRGN; begin
MyRgn := CreateEllipticRgn(1, 1, 50, 50); // Запоминается старый регион
OldRgn:=SelectObject(Canvas.handle, MyRgn); Canvas.Rectangle(4, 4, 150, 150);
//------ выполняется рисование ---------
// Восстанавливается исходный регион SelectObject(Canvas.handle,OldRgn);
end;
8
Применение регионов
Регион позволяет задать на канве область определенной формы. procedure TForm1.RebuildWindowRgn;
var
MyRgn, OldRgn : HRGN; begin
MyRgn := CreateEllipticRgn(1, 1, 50, 50); // Запоминается старый регион
OldRgn:=SelectObject(Canvas.handle, MyRgn); Canvas.Rectangle(4, 4, 150, 150);
//------ выполняется рисование ---------
// Восстанавливается исходный регион SelectObject(Canvas.handle,OldRgn);
end;
9
API функции для создания
регионов
function CreateRectRgn(X1, Y1, X2, Y2: Integer): HRGN; function CreateRectRgnIndirect(const p1: TRect): HRGN;
Функция CreateRectRgn создает регион прямоугольной формы (параметры задают координаты для верхнего левого и нижнего правого угла прямоугольника, задающего регион. Функция CreateRectRgnIndirect аналогична функции CreateRectRgn – разница в том, что вместо четырех координат функция получает структуру типа TRect .
function CreateRoundRectRgn(X1, Y1, X2, Y2, H, W: Integer): HRGN;
Функция CreateRoundRectRgn аналогична функции CreateRectRgn, но создаваемая прямоугольная область имеет скругленные углы. X1, Y1 – координаты верхнего левого угла, X2, Y2 – координаты нижнего
правого, H, W – высота и ширина эллипса, применяемого для
скругления углов
10