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

Работа с текстом

Для вывода строки текста на экран необходимо использовать контекст устройства и соответствующие функции, например:

case Message of

wm_Paint:

begin

MyDC:=BeginPaint(MyWnd,MyPaint);

TextOut(MyDC,x,y,’Пример вывода текста’,13); <-число символов

EndPaint(MyWnd, MyPaint);

end;

Выравнивание текста относительно рабочей области окна можно выполнить с помощью функции SetTextAlign.

В системе определено пять стандартных шрифтов. Для того, чтобы выбрать один из этих шрифтов, используется функция GetStockObject. Кроме того, можно создать логический шрифт – это список атрибутов шрифта, включая высоту, ширину, набор символов. Для этого используется функция CreateFont или функция CreateFontIndirect. Эти функции возвращают ссылку на логический шрифт, затем ссылка используется в качестве параметра функции SelectObject для выбора этого шрифта в качестве текущего для контекста. Структура, описывающая атрибуты шрифта имеет тип TLogFont и является параметром функции CreateFontIndirect.

CreateFont(Height, Width Escapement, Orientation, Weight: Integer; Italic, Underline, StrikeOut, CharSet, OutputPrecision, ClipPrecision, Quality, PitchAndFamily: Byte; FaceName: PChar): HFont;

Паpаметpы:

Height: Высота шpифта (в логических единицах).

Width: Шиpина шpифта (в логических единицах)

Escapement: Угол (наклона) стpоки (в десятых долях гpадуса)

Orientation: Угол наклона оси символов (в десятых долях гpадуса)

Weight: Вес шpифта (0 - 000). Либо можно использовать константы fw_, такие как fw_Bold.

Italic: Шpифт - куpсив.

Underline: Шpифт - с подчеpкиванием.

StrikeOut: Шpифт с пеpечеpкиванием.

CharSet: Одна из констант ANSI_CharSet, OEM_CharSet, Symbol_CharSet.

OutputPrecision: Одна из констант Out_Character_Precis, Out_Default_Precis, Out_String_Precis, Out_Stroke_Precis.

ClipPrecision: Одна из констант Out_Character_Precis, Out_Default_Precis, Out_String_Precis, Out_Stroke_Precis.

Quality: Одна из констант Default_Quality, Draft_Quality, Proof_Quality.

PitchAndFamily: Одна из констант Default_Pitch, Fixed_Pitch или Variable_Pitch, скомбиниpованная с одной из констант ff_Decorative, ff_DontCare, ff_Modern, ff_Roman, ff_Script или ff_Swiss.

FaceName: Название шpифта (заканчивающееся пустым символом).

CreateFontIndirect(var LogFont: TLogFont): HFont;

Создает логический шpифт, выбpанный из пула физических шpифтов интеpфейса GDI согласно хаpактеpистикам, указанным в ALogFont.

Паpаметpы:

ALogFont: Стpуктуpа TLogFont.

Пример.

var Font1:hFont; lFont:TLogFont;

begin

lFont.lfHeight:=25; высота шрифта

lFont.lfWidth:=15; ширина шрифта

lFont.lfUnderline:=1; тип шрифта подчеркнутый

lFont.lfItalic:=1; тип шрифта курсив

StrCopy(lFont.lfFaceName,'Helv');

Font1:=CreateFontIndirect(lFont);

SelectObject(MyDC,Font1);

TextOut(MyDC,20,20,'Helvetica-Underlined and Italics',34);

end.

Ресурс меню

Ядро Windows поддерживает два вида меню: строчное и всплывающее. Ресурс типа меню может быть создан двумя способами: при помощи текстового редактора и компилятора ресурсов RC.EXE или при помощи редактора ресурсов WORKSHOR.EXE. Рассмотрим пример ресурса меню.

NAME MENU наименование меню

BEGIN

POPUP "&File" наименование всплывающего меню

BEGIN

MENUITEM "Item1", 101 идентификатор эл-та

MENUITEM SEPARATOR разделитель

MENUITEM "Item2", 102

END

MENUITEM "&About", 103 наименование строчного меню

END

Идентификатор каждого элемента меню содержит наименование элемента и уникальный номер. Символ & указывает, что следующий за ним символ выделяется другим цветом и может быть использован для вызова элемента меню “горячей” клавишей.

Для подключения ресурса к программе используется директива компилятора $R. {$R Wmenu имя файла ресурсов}

Далее можно применить один из способов. Первый состоит в том, что имя описания меню в ресурсе указывается при создании класса окна. Таким образом, все окна данного класса будут иметь данное меню.

Перед регистрацией класса окна ему присваивается ряд атрибутов, в том числе меню класса.

WndClas.lpszMenuName := 'NAME';

После того, как класс окна будет зарегистрирован, все окна данного класса будут иметь указанное меню.

Второй способ состоит в указании ссылки на меню только при создании конкретного окна. В этом случае только одно окно будет иметь указанное меню.

Ресурс меню необходимо загрузить с помощью функции LoadMenu, возвращающей ссылку на загруженное меню. При вызове функции CreateWindow ссылка на это меню указывается в качестве параметра типа hMenu.

var

Window: hWnd;

MyMenu: hMenu;

...

MyMenu:=LoadMenu(hInstance,’Name’);

Window := CreateWindow('Menu Example', 'Menu Example', WS_OverLappedWindow, CW_UseDefault, 0, CW_UseDefault, 0, 0, MyMenu, hInstance, nil);

При выборе команды меню ядро Windows посылает сообщение wm_Command соответствующей оконной функции. Параметр wParam содержит идентификатор команды меню. Оконная функция должна выполнять все действия, связанные с командой меню.

case Message of

WM_Command:

case WParam of

101: begin

end;

102: begin

end;

end; end;

Существует ряд функций, позволяющий работать с меню.

Enable MenuItem – позволяет указать начальное состояние команды меню: обычная, отмененная или неактивная.

CheckMenuItem – отображает специальный символ рядом с названием команды (галочка).

AppendMenu –добавляет новые команды в меню.

DeleteMenu – удаляет команду из существующего меню и т.д.

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