В главной функции потребуется вызвать модальный диалог, как показано ниже:
int APIENTRY WinMain (HINSTANCE KodPril.HINSTANCE. LPSTR, int ) {DialogBox - KodPril, "START", NULL. (DLGPROOStartProc); return 0;
}
После этого на экран будет выведено диалоговое окно, события в котором можно обрабатывать оконной процедурой диалога, код которой приведен в листинге 7.8.
Листинг 7.8
BOOL StartProcCHWND hDlg.UINT message. WPARAM wParam.LPARAM lParam) {
switch(message) {
case WM_INITDIALOG: //Здесь выполняется инициализация приложения
return TRUE; . л продолжение &
Диалоговые окна
Листинг 7.8 {продолжение)
case WM_LBUTT0ND0WN: break; case WM_COMMAND:
if (LOWORD(wParam)-IDCANCEL)
{EndDialog(hDlg. LOWORD(wParam)); return TRUE;
}
}
return FALSE; }
Как указывается в литературе, организация приложения на основе диалогового окна обеспечивает минимальные затраты времени процессора на работу операционной системы.
Элементы управления в диалоговых окнах
Окна редактирования и статический текст
Управляющие элементы Edit являются окнами класса edit. Они предназначены для ввода строки текста во внутреннюю переменную элемента.
Внешний вид и поведение элемента Edit настраиваются при помощи флагов стиля ES_LEFT, ES_MULTYLINE, ES_AUT0HSCR0LL, ES_WANTRETURN и других флагов, которые рассматривались в предыдущих разделах.
Обычно стиль элемента задается программистом при помещении его в диалоговое окно при помощи редактора ресурсов. Но при известном дескрипторе графического элемента управления флаги стиля можно легко изменить во время выполнения приложения при помощи функций GetWindowLong() и SetWindowLong(). Например, чтобы снять в элементе с идентификатором RADIUS флаг ES_MULTILINE, необходимо выполнить довольно простую последовательность действий:
1. Объявить рабочую переменную 1 ong Style.
2. Прочитать установленные флаги при помощи вызова функции GetWindow-Long(GetDlgltemChDlg. RADIUS).GWLJTYLE.Sty 1 e).
3. Снять флаг ES_ULTILINE, не изменяя остальных флагов, при помощи конструкции Style = Style&~ ES_MULTILINE.