Программирование в Delphi. Трюки и эффекты. Александр Чиртик
Чтение книги онлайн.

Читать онлайн книгу Программирование в Delphi. Трюки и эффекты - Александр Чиртик страница 27

СКАЧАТЬ бы один диск, и False – в противном случае.

      Системное окно О программе

      Этот последний и довольно специфический пример приведен на тот случай, если возникнет желание или необходимость использовать окно О программе, которое выводится для самой операционной системы Windows и ее компонентов. Процедура, выводящая это окно, приведена в листинге 2.32.

Листинг 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.

Листинг 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, СКАЧАТЬ