Операционная система Microsoft Windows 3.1 для программиста -том 2


Листинг 3.1. Файл dialog\dialog.cpp - часть 3


Функция главного окна приложения WndProc обрабатывает сообщение WM_COMMAND, поступающее от кнопки:

case WM_COMMAND: { if(wParam == IDB_Button1) { lpfnDlgProc = (DLGPROC) MakeProcInstance((FARPROC)DlgProc, hInst);

DialogBox(hInst, "DIALOG_OK", hwnd, lpfnDlgProc); } return 0; }

Прежде всего вызывается функция MakeProcInstance, создающая переходник для функции диалога DlgProc. Если вы пользуетесь современными средствами разработки, такими как Borland C++ for Windows версий 3.1 или 4.0 или Microsoft Visual C++, и если функция диалога описана с ключевым словом _export, переходник можно не создавать.

Далее обработчик сообщения вызывает функцию DialogBox, создающую модальную диалоговую панель. Шаблон этой модели описан в файле ресурсов приложения (листинг 3.2).

Функция диалоговой панели DlgProc обрабатывает сообщения WM_INITDIALOG и WM_COMMAND.

Обработчик сообщения WM_INITDIALOG состоит из одной строки, возвращающей значение TRUE. В этом случае после инициализации диалоговой панели фокус ввода передается первому органу управления, описанному в шаблоне со стилем WS_TABSTOP. В нашем случае это кнопка с надписью "OK":

DEFPUSHBUTTON "OK", IDOK, 56, 43, 36, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP

Обработчик сообщения WM_COMMAND в ответ на любые действия пользователя вызывает функцию EndDialog, предназначенную для завершения работы диалоговой панели:

case WM_COMMAND: { switch(wParam) { case IDOK: case IDCANCEL: { EndDialog(hdlg, 0); return TRUE; } } }




Начало  Назад  Вперед



Книжный магазин