Читаем Delphi. Трюки и эффекты полностью

Листинг 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(20, 20, 200, 30, 1001, \'Открытие файла\');

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

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

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

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

CreateButton(20, 220, 200, 30, 1006, \'Окно поиска и замены\');

CreateButton(230, 20, 220, 30, 1010, \'Выбор папки\');

CreateButton(230, 60, 220, 30, 1011, \'Подключение сетевого

ресурса\');

CreateButton(230, 100, 220, 30, 1012, \'Отключение сетевого

ресурса\');

CreateButton(230, 140, 220, 30, 1013, \'Системное окно "О про-

грамме"\');

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

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

ShowWindow(hMainWnd, SW_NORMAL);

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

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

begin

if (IsDialogMessage(hMainWnd, mess) = False) then

begin

TranslateMessage(mess);

DispatchMessage(mess);

end;

end;

end.

Код функции RegisterWindow опущен, так как он аналогичен приведенному в листинге 2.4. Функции работы с рассмотренными ранее диалоговыми окнами вынесены в модуль StdWindows (файл StdWindows. pas).

Особенностью цикла обработки сообщений в этом примере является использование API-функции IsDialogMessage, которая позволяет реагировать на некоторые действия пользователя так, как это делается в диалоговых окнах. Примером может быть перемещение фокуса между окнами при нажатии клавиши Tab.

Перед функцией RegisterWindow (на месте многоточия перед ее объявлением в листинге 2.33) находится функция обработки сообщений, имеющая следующий вид (листинг 2.34).

...
Перейти на страницу:

Похожие книги

102 способа хищения электроэнергии
102 способа хищения электроэнергии

Рассмотрена проблема хищений электроэнергии и снижения коммерческих потерь в электрических сетях потребителей. Приведены законодательно–правовые основы для привлечения к ответственности виновных в хищении электроэнергии. Изложены вопросы определения расчетных параметров средств учета электроэнергии, показаны схемы подключения счетчиков электрической энергии. Описаны расчетные и технологические способы хищения электроэнергии. Обсуждаются организационные и технические мероприятия по обнаружению, предотвращению и устранению хищений.Для работников энергоснабжающих организаций и инспекторского состава органов Ростехнадзора. Материалы книги могут быть использованы руководителями и специалистами энергослужб предприятий (организаций) для правильного определения расчетных параметров средств учета и потерь электроэнергии в электрических сетях.Если потенциальные расхитители электроэнергии надеются найти в книге «полезные советы», они должны отдавать себе отчет, что контролирующие структуры информированы в не меньшей степени и, следовательно, вооружены для эффективной борьбы с противоправной деятельностью.Настоящая книга является переработанным и дополненным изданием выпущенной в 2005 г. книги «101 способ хищения электроэнергии».

Валентин Викторович Красник

Технические науки / Образование и наука
100 великих чудес инженерной мысли
100 великих чудес инженерной мысли

За два последних столетия научно-технический прогресс совершил ошеломляющий рывок. На что ранее человечество затрачивало века, теперь уходят десятилетия или всего лишь годы. При таких темпах развития науки и техники сегодня удивить мир чем-то особенным очень трудно. Но в прежние времена появление нового творения инженерной мысли зачастую означало преодоление очередного рубежа, решение той или иной крайне актуальной задачи. Человечество «брало очередную высоту», и эта «высота» служила отправной точкой для новых свершений. Довольно много сооружений и изделий, даже утративших утилитарное значение, тем не менее остались в памяти людей как чудеса науки и техники. Новая книга серии «Популярная коллекция «100 великих» рассказывает о чудесах инженерной мысли разных стран и эпох: от изобретений и построек Древнего Востока и Античности до небоскребов в сегодняшних странах Юго-Восточной и Восточной Азии.

Андрей Юрьевич Низовский

История / Технические науки / Образование и наука
Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки