Окт 16

Вызов диалога

Вызов диалогового окна в программе должен происходить после выбора пользователем пункта меню About... . Обработкой сообщений WM_COMMAND, которые инициируются после выбора команд меню, занимается оконная процедура. В случае выбора пункта меню About... младшее слово wParam сообщения WM_COMMAND содержит идентификатор IDM_AB0UT.
Оконная процедура программы MenuDemol, обрабатывая это сообщение, вызывает функцию MessageBox. Теперь же оконная процедура вызывает функцию DialogBox:
DialogBox(hInst, MAKEINTRESOURCECIDD_AB0UT). hWnd. AboutDlgProc):
Для вызова функции необходимо использовать дескриптор экземпляра приложения, сохраненный при обработке сообщения WM_CREATE, идентификатор шаблона диалога, дескриптор родительского окна для окна диалога и адрес диалоговой процедуры.
Функция DialogBox создает и выводит на экран модальное диалоговое окно, построенное по шаблону IDD_AB0UT. Кроме того, DialogBox сообщает Windows, что диалоговая процедура для обслуживания этого окна имеет адрес AboutDlgProc.
В своей реализации функция DialogBox использует вызов CreateWindowEx для создания диалогового окна. После этого она посылает сообщение WM_INITDIALOG диалоговой процедуре, отображает диалоговое окно, блокирует (делает недоступным для ввода) родительское окно и запускает цикл обработки сообщений для менеджера диалогового окна.
Функция DialogBox не возвращает управление в WndProc до тех пор, пока окно диалога не будет закрыто.
Когда диалоговая процедура вызывает функцию EndDialog, функция DialogBox уничтожает диалоговое окно, завершает работу цикла обработки сообщений для менеджера диалогового окна, деблокирует родительское окно и возвращает значение параметра nResult, с которым вызывалась функция EndDialog.