Название: Программирование в Delphi. Трюки и эффекты
Автор: Александр Чиртик
Жанр: Программирование
isbn: 978-5-49807-118-3
isbn:
Системное окно О программе
Этот последний и довольно специфический пример приведен на тот случай, если возникнет желание или необходимость использовать окно О программе, которое выводится для самой операционной системы Windows и ее компонентов. Процедура, выводящая это окно, приведена в листинге 2.32.
procedure ShowAbout(strAppName: string; strInfo: string);
begin
ShellAbout(hParentWnd, PAnsiChar(strAppName), PAnsiChar(strInfo),
LoadIcon(0, IDI_ASTERISK));
end;
Правда, в окне О программе Windows XP на информацию о приложении отведено всего две строки (и место для значка). Все остальное место занимают информация о регистрации операционной системы и фирменная эмблема Microsoft Windows XP.
Демонстрационное приложение
Теперь пришла очередь рассмотреть небольшое приложение, использующее описанные выше окна (проект StandartWindows). Окно этого приложения показано на рис. 2.8.
Рис. 2.8. Окно демонстрационного приложения
Размер EXE-файла приложения равен 22 Кбайт.
В листинге 2.33 приведены объявления используемых глобальных переменных, код, реализующий создание окна и элементов управления в нем, а также цикл обработки сообщений (файл StandartWindows.dpr). Функции работы с рассмотренными выше окнами вынесены в отдельный модуль StdWindows (файл StdWindows.pas).
В листингах 2.33-2.34 используются уже знакомые вам функции из модуля Controls.
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, СКАЧАТЬ