Коды и описания уведомлений рассматриваемых в этой главе элементов управления приведены в приложении 3.
Пример приложения
Рассмотрим небольшой пример, иллюстрирующий принцип работы с элементами управления, помещенными на форму описанным ранее способом. Проект этого приложения называется ControlsDemo.
Не буду заострять внимание на регистрации класса главного окна приложения, так как она аналогична приведенной в листинге 2.4. Рассмотрим создание окна с элементами управления в нем (листинг 2.21).
Листинг 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(2 0, 100, 70, 30, 1001, 'Кнопка 1');
CreateButton(100, 100, 70, 30, 1002,'Кнопка 2');
CreateFrame(2 00, 10, 200, 180, –1, 'Флажки и переключатели');
CreateCheck(2 10, 30, 180, 20, 2001, 'Флажок 1');
CreateCheck(2 10, 60, 180, 20, 2002, 'Флажок 2', True);
CreateOption(2 10, 100, 180, 20, 3001, 'Переключатель 1', True);
CreateOption(2 10, 130, 180, 20, 3002, 'Переключатель 2', False, True);
CreateOption(2 10, 160, 180, 20, 3003, 'Переключатель 3', True);
CreateFrame(420, 10, 300, 180, –1, 'Списки и статические надписи');
CreateLabel(430, 30, 70, 20, -1, 'Надпись');
CreateCombo(510, 30, 200, 100, 4001);