Модальное диалоговое окно создается с помощью диалоговое окно функции. Необходимо указать идентификатор или имя ресурса шаблона поля диалогового окна и адрес процедуру диалогового окна. Диалоговое окно функция загружает шаблон, отображает диалоговое окно и обрабатывает весь ввод пользователя до тех пор, пока пользователь не закроет диалоговое окно "".
В следующем примере приложение отображает модальное диалоговое окно, когда пользователь выбирает команду Удалить элемент из меню приложений. Диалоговое окно содержит элемент управления edit (в котором пользователь вводит имя элемента) и OK и отмена кнопки. Идентификаторов элементов управления для этих элементов управления являются ID_ITEMNAME, IDOK и IDCANCEL, соответственно.
Первая часть примера состоит из заявления, которые создать модальное диалоговое окно. Эти заявления, в процедуре окна для главного окна приложения, создайте диалогового окна, когда система получает сообщения WM_COMMAND , имеющие идентификатор команды IDM_DELETEITEM. Второй частью примера является процедуру диалогового окна, которое извлекает содержимое элемента управления редактирования и закрывает диалоговое окно после получения сообщения WM_COMMAND.
Следующие инструкции создают модальным диалоговым окном. Диалогового окна поле шаблон является ресурсом в исполняемый файл приложения и имеет идентификатор ресурса DLG_DELETEITEM:
дело WM_COMMAND: переключение (LOWORD(wParam)) {IDM_DELETEITEM, дело: если (диалоговое окно (hinst, MAKEINTRESOURCE(DLG_DELETEITEM), hwnd, DeleteItemProc (DLGPROC)) == IDOK) {}
/ / Полная команда; szItemName / / содержит имя элемента для / / delete.
}
else
{
/ / Отменить команду.
}
break;
} Возвращает 0 Л
В этом примере приложение определяет его главное окно как окно-владелец для диалогового окна. Когда система изначально отображает диалоговое окно, его положение панели задается верхний левый угол клиентской области окна-владельца. Приложение использует значение, возвращаемое методом диалоговое окно для определения необходимости запустить с помощью команды, или отменить его. Следующие операторы определяют процедуру диалогового окна.
szItemName char [80]; / / Получает имя элемента для удаления.
BOOL обратного ВЫЗОВА DeleteItemProc (hwndDlg, сообщение, wParam, lParam) HWND hwndDlg;
UINT сообщение;
WPARAM wParam;
LPARAM lParam;
{переключатель (сообщение) {WM_COMMAND, дело: переключение (LOWORD(wParam)) {IDOK, дело: если (!GetDlgItemText (hwndDlg, ID_ITEMNAME, szItemName, 80)) * szItemName = 0;
/ / Подпадают через.
дело IDCANCEL: EndDialog (hwndDlg, wParam);
Возвращает значение TRUE;
}} Возвращает значение FALSE;
}
В этом примере процедура использует GetDlgItemText для извлечения текущего текста из элемента управления для редактирования определенных ID_ITEMNAME. Затем процедура вызывает функцию EndDialog указать возвращаемое диалоговым окном значение IDOK или IDCANCEL, в зависимости от полученного сообщения и начать процесс закрытия диалоговым окном. Идентификаторы IDOK и IDCANCEL соответствуют кнопки ОК и Отмена. После того, как процедура вызывает EndDialog, система отправляет дополнительные процедуры для уничтожения диалогового окна и возвращает Возвращаемое диалоговым окном значение обратно к функции, которая создана диалогового.