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

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

'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);

CreateList(430, 60, 280, 120, 5001);

CreateFrame(2 00, 200, 200, 240, –1, 'Текстовые поля');

CreateEdit(2 10, 22 0, 180, 20, 6001, 'Текст в текстовом поле');

CreateMemo(2 10, 25 0, 180, 180, 6002, 'Текст в многострочном'+ #13

+ #10 + 'текстовом поле');

//Добавление строк в списки

AddToCombo(4001, 'Строка 1');

AddToCombo(4001, 'Строка 2');

AddToCombo(4001, 'Строка 3');

AddToList(5 001, 'Строка 1');

AddToList(5 001, 'Строка 2');

AddToList(5 001, 'Строка 3');

ShowWindow(hMainWnd, SW_NORMAL);

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

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

do begin

TranslateMessage(mess);

DispatchMessage(mess);

end;

end.


Код листинга 2.21 заодно демонстрирует использование некоторых из приведенных ранее функций работы с элементами управления. Выглядит созданное окно так, как показано на рис. 2.3.

Рис. 2.3. Окно с элементами управления


Принцип построения функции обработки сообщений для этого окна описан в листинге 2.22.

Листинг 2.22. Функция обработки сообщений

//Функция обработки сообщений

function WindowFunc(hWnd:HWND; msg:UINT;

wParam:WPARAM; lParam:LPARAM):LRESULT; stdcall;

var

ps: PAINTSTRUCT;

begin

case msg of

WM_PAINT:

begin

//Перерисовка содержимого окна

BeginPaint (hWnd, ps);

Text Out (ps.hdc, 10, 10, 'Текст в окне', 12);

EndPaint(hWnd, ps);

end;

WM_CLOSE:

if (hWnd = hMainWnd) then

PostQuit Message(0); //При закрытии этого окна завершается

//приложение

Страница 32