...

Листинг 2.21.

Создание главного окна приложения (с элементами управления)

program ControlsDemo;

uses

Windows, Messages,

Controls in \'Controls.pas\

{$R *.res}

var

hMainWnd: HWND;

hInst: Cardinal;

mess: MSG;

//Функция обработки сообщений

//Создание окна и цикла обработки сообщений

begin

hInst := GetModuleHandle(nil);

//Регистрация и создание главного окна

if not RegisterWindow() then Exit;

hMainWnd := CreateWindow(

\'MyWindowClass\', //Имя класса окна

\'Главное окно\', //Заголовок окна

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, //Координата X по умолчанию

CW_USEDEFAULT, //Координата Y по умолчанию

CW_USEDEFAULT, //Ширина по умолчанию

CW_USEDEFAULT, //Высота по умолчанию

HWND(nil), //Нет родительского окна

HMENU(nil), //Нет меню

hInst,

nil);

if (hMainWnd = HWND(nil)) then Exit;

//Инициализация модуля Controls для работы с главным окном

Controls.hParentWnd := hMainWnd;

Controls.hAppInst := hInst;

//Создание элементов управления

CreateFrame(10, 80, 170, 70, –1, \'Кнопки\');

CreateButton(20, 100, 70, 30, 1001, \'Кнопка 1\');

CreateButton(100, 100, 70, 30, 1002,\'Кнопка 2\');

CreateFrame(200, 10, 200, 180, –1, \'Флажки и переключатели\');

CreateCheck(210, 30, 180, 20, 2001, \'Флажок 1\');

CreateCheck(210, 60, 180, 20, 2002, \'Флажок 2\', True);

CreateOption(210, 100, 180, 20, 3001, \'Переключатель 1\', True);

CreateOption(210, 130, 180, 20, 3002, \'Переключатель 2\', False,

True);

CreateOption(210, 160, 180, 20, 3003, \'Переключатель 3\', True);

CreateFrame(420, 10, 300, 180, –1, \'Списки и статические

надписи\');

CreateLabel(430, 30, 70, 20, -1, \'Надпись\');

CreateCombo(510, 30, 200, 100, 4001);

CreateList(430, 60, 280, 120, 5001);

CreateFrame(200, 200, 200, 240, –1, \'Текстовые поля\');

CreateEdit(210, 220, 180, 20, 6001, \'Текст в текстовом поле\');

CreateMemo(210, 250, 180, 180, 6002, \'Текст в многострочном\'

+ #13 + #10 + \'текстовом поле\');

//Добавление строк в списки

AddToCombo(4001, \'Строка 1\');

AddToCombo(4001, \'Строка 2\');

AddToCombo(4001, \'Строка 3\');

AddToList(5001, \'Строка 1\');

AddToList(5001, \'Строка 2\');

AddToList(5001, \'Строка 3\');

ShowWindow(hMainWnd, SW_NORMAL);

//Запуск цикла обработки сообщений

while (Longint(GetMessage(mess, 0, 0, 0)) <> 0)

do begin

TranslateMessage(mess);

DispatchMessage(mess);

end;

end.

Листинг 2.21 заодно демонстрирует использование некоторых из приведенных ранее функций работы с элементами управления. Выглядит созданное окно так, как показано на рис. 2.3.

Рис. 2.3. Окно с элементами управления

Принцип построения функции обработки сообщений для этого окна приведен в листинге 2.22.

Загрузка...