Размер шрифта
-
+

Программирование в Delphi. Трюки и эффекты - стр. 38

Демонстрационное приложение

Теперь пришла очередь рассмотреть небольшое приложение, использующее описанные выше окна (проект StandartWindows). Окно этого приложения показано на рис. 2.8.

Рис. 2.8. Окно демонстрационного приложения


Размер EXE-файла приложения равен 22 Кбайт.

В листинге 2.33 приведены объявления используемых глобальных переменных, код, реализующий создание окна и элементов управления в нем, а также цикл обработки сообщений (файл StandartWindows.dpr). Функции работы с рассмотренными выше окнами вынесены в отдельный модуль StdWindows (файл StdWindows.pas).

В листингах 2.33-2.34 используются уже знакомые вам функции из модуля Controls.

Листинг 2.33. Глобальные переменные, код создания окна и цикл обработки сообщений

program StandartWindows;

{$R *.res}

uses

Windows, Messages, CommDlg,

Controls in 'Controls.pas',

StdWindows in 'StdWindows.pas';

var

hMainWnd: HWND;

hInst: Cardinal;

mess: MSG;

curColor: COLORREF;

font: LOGFONT;

hCurFont: HFONT;

...

function RegisterWindow():Boolean;

...

begin

hInst:= GetModuleHandle(nil);

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

if not RegisterWindow() then Exit;

hMainWnd:= CreateWindow(

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

'Стандартные окна Windows', //Заголовок окна

WS_CAPTION or WS_SYSMENU or WS_CLIPCHILDREN or WS_CLIPSIBLINGS,

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

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

470, 420,

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

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

hInst,

nil);

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

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

Controls.hParentWnd:= hMainWnd;

Controls.hAppInst:= hInst;

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

StdWindows.hParentWnd:= hMainWnd;

StdWindows.hAppInst:= hInst;

//Создание кнопок для открытия окон

CreateButton(2 0, 20, 200, 30, 1001, 'Открытие файла');

CreateButton(2 0, 60, 200, 30, 1002, 'Сохранение файла');

CreateButton(2 0, 100, 200, 30, 1003, 'Выбор цвета');

CreateButton(2 0, 140, 200, 30, 1004, 'Выбора шрифта');

CreateButton(2 0, 180, 200, 30, 1005, 'Окно поиска текста');

CreateButton(2 0, 22 0, 200, 30, 1006, 'Окно поиска и замены');

CreateButton(23 0, 20, 22 0, 30, 1010, 'Выбор папки');

CreateButton(23 0, 60, 22 0, 30, 1011, 'Подключение сетевого ресурса');

CreateButton(23 0, 100, 22 0, 30, 1012, 'Отключение сетевого ресурса');

CreateButton(23 0, 140, 22 0, 30, 1013, 'Системное окно "О программе"');

//Текстовое поле для результата

CreateMemo (20, 270, 430, 100, 2001);

ShowWindow(hMainWnd, SW_NORMAL);

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

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

Страница 38