Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СКТ - 5,6сем.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
8.67 Mб
Скачать

Пример:

var Win:hWnd; DC: hDC; Brush, Brush1: hBrush; Pen, Pen1: hPen;

Begin

…DC:=GetDC(Win);

Pen:=GetStockObject(Black_Pen);

SelectObject(MyDC,Pen);

Brush:=GetStockObject(LtGray_Brush);

SelectObject(MyDC,Brush);

Rectangle(MyDC,50,50,100,100);

DC: Идентификатоp контекста устpойства.

X1, Y1: Веpхний левый угол пpямоугольника.

X2, Y2: Пpавый нижний угол пpямоугольника.

Pen1:=CreatePen(ps_Solid,1,RGB(0,0,0));

Brush1:=CreateHatchBrush(hs_FDiagonal,RGB(0,255,0));

SelectObject(MyDC,Pen1);

SelectObject(MyDC,Brush1);

Ellipse(MyDC,150,50,200,100);

DC: Идентификатоp контекста устpойства.

X1, Y1: Веpхний левый угол огpаничивающего пpямоугольника.

X2, Y2: Пpавый нижний угол огpаничивающего пpямоугольника.

…end;

Введение в ресурсы

Ресурсы позволяют размещать видимые и логические элементы программ, такие как меню, таблицы строк и растровые изображения в специальных файлах, которые затем могут быть присоединены к программе. Обычно ресурсы создаются при помощи редактора ресурсов WORKSHOR.EXE. Файлы ресурсов могут иметь два типа расширения: неоткомпилированная версия, называемой файлом описания ресурсов (расширение .rc) и откомпилированная версия (с расширением .res). Для подключения файла ресурсов в программе используется следующая директива компилятора: {$R имя файла ресурсов}.

Курсоры, пиктограммы и растровые изображения

Курсоры хранятся в файлах с расширением .CUR или совместно с другими ресурсами в файлах с расширением .RES, .rc. Курсор, который будет использоваться для окон данного класса, задается при создании класса с помощью функции LoadCursor. Можно изменять тип курсора во время работы приложения функцией SetCurcsor. В качестве параметра ей указывается ссылка на курсор. Вызов этой функции производится при обработке сообщения wm_MouseMove или выбора некоторого пункта меню. Существует несколько стандартных курсоров, описанных ранее.

Аналогично используются пиктограммы и растровые изображения.

LoadIcon

LoadBitmap

загрузка и возврат ссылки

DrawIcon

BitBit

отображение в рабочей области окна

PatBit

заполнение шаблоном фона рабочей области

Пример.

{Выбор курсора, пиктограммы и битового образа}

{$R cur_ico}

uses WinTypes, WinProcs;

var

Wnd: HWnd;

Msg: TMsg;

hBit:HBITMAP;

function W1(Wnd: hWnd; iMessage, wParam: Word; lParam: LongInt): LongInt; export;

var PaintStruct: TPaintStruct;

DC, hmdc : hDC;

bm :hBITMAP ;

begin

case iMessage of

WM_Paint:

begin

DC:=BeginPaint(Wnd, PaintStruct);

TextOut(DC,50,10,'Новые курсор и пиктограмма',26);

hmdc:=CreateCompatibleDC(DC); {создает контекст в памяти, совместимый с контекстом окна}

bm:=SelectObject(hmdc,hBit);

BitBit(DC,10,100,64,64,hmdc,0,0,SRCCOPY);{копирует образ из памяти на экран}

SelectObject(hmdc,bm);

DeleteDC(hmdc);

ReleaseDC(Wnd,DC);

EndPaint(Wnd,PaintStruct);

end;

WM_Destroy:

begin

PostQuitMessage(0);

exit;

end;

end;

W1 := DefWindowProc(Wnd, iMessage, wParam, lParam);

end;

procedure Register;

var

WndClas: TWndClass;

begin

if hPrevInst <> 0 then Exit;

WndClas.Style := CS_HReDraw or CS_VReDraw;

WndClas.lpfnWndProc:= @W1;

WndClas.cbClsExtra := 0;

WndClas.cbWndExtra := 0;

WndClas.hInstance := HInstance;

WndClas.hIcon := LoadIcon(hInstance, 'New_Ico');

WndClas.hCursor := LoadCursor(hInstance, 'New_Cur');

WndClas.hbrBackground := GetStockObject(white_Brush);

{WndClas.hbrBackground := CreatePatternBrush(hBit); - эта строка заполняет фон окна bitmap}

WndClas.lpszMenuName := '';

WndClas.lpszClassName := 'Class1';

if not RegisterClass(WndClas) then

begin

MessageBox(GetFocus, 'Can not Register Class', 'Error ', MB_OK);

Halt;

end;

end;

procedure WinMain;

begin

hBit:=LoadBitmap(hInstance,'New_Bit');

{получаем идентификатор битового образа}

Register;

Wnd:=CreateWindow('Class1','Главное окно',WS_OverLappedWindow, 0, 0, 400, 200, 0, 0,hPrevInst, nil);

ShowWindow(Wnd, CmdShow);

UpDateWindow(Wnd);

while GetMessage(Msg, 0, 0, 0) do

begin

TranslateMessage(msg);

DispatchMessage(msg);

end;

end;

begin

WinMain;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]