Немодальные диалоговые окна

Немодальное диалоговое окно должно быть всплывающее окно системного меню, строки заголовка и тонкая граница; то есть шаблон поля диалогового окна следует указывать стили WS_POPUP, WS_CAPTION, WS_BORDER и WS_SYSMENU. Система не не автоматического отображения диалогового окна, если шаблон определяет стиль WS_VISIBLE.

Приложение создает немодальное диалоговое окно, используя функцию CreateDialog или CreateDialogIndirect . CreateDialog требует имя или идентификатор ресурса, содержащего шаблон поля диалогового окна; CreateDialogIndirect требует дескриптор объекта памяти, содержащий шаблон поля диалогового окна. Две другие функции, CreateDialogParam и CreateDialogIndirectParam, также создавать безрежимные диалоговые; они передать указанный параметр процедуру диалогового окна при создании диалогового окна.

CreateDialog и другие создания функции возвращают дескриптор окна для диалогового окна. Приложение и процедуру диалогового окна можно использовать этот дескриптор для управления диалогового окна. Например, если WS_VISIBLE не указан в поле шаблон диалогового окна, приложение может диалоговое окно, передавая дескриптор окна в функцию ShowWindow.

Немодальное диалоговое окно не отключает окно-владелец не отправляет сообщения. При создании диалогового окна, система делает его активным окном, но пользователь или приложение может в любое время изменить активное окно. Если диалоговое окно "" становятся неактивными, он по-прежнему выше окно владельца в Z-порядке, даже если окно-владелец активен.

Приложение отвечает за извлечение и входные сообщения для диалогового окна. Большинство приложений используют основной цикл обработки сообщений для этого. Чтобы разрешить пользователю перейти и выбрать элементы управления с помощью клавиатуры, однако, приложение должно вызывать функцию IsDialogMessage . Для получения дополнительных сведений об этой функции увидеть Диалоговое окно поле клавиатурный интерфейс.

Немодальное диалоговое окно не может возвращать значение к приложению, что делает модальное диалоговое окно, но процедуру диалогового окна могут отправлять информацию в окно-владелец, используя функции SendMessage.

Приложение должно уничтожить все немодальные диалоговые перед завершением. Она может уничтожить немодальное диалоговое окно, используя функцию DestroyWindow . В большинстве случаев процедуру диалогового окна вызывает DestroyWindow в ответ на действия пользователя, такие как выбор кнопку Отмена. Если пользователь никогда не закрывает диалоговое окно "" таким образом, приложение должно вызвать метод DestroyWindow.

DestroyWindow делает недействительным дескриптор окна для диалогового окна, поэтому любые последующие вызовы функций, которые используют ручки возвращать значения ошибок. Чтобы избежать ошибок, процедуру диалогового окна следует уведомления владельца диалогового окна была уничтожена. Многие приложения поддерживают глобальная переменная, содержащая дескриптор для диалогового окна. Когда процедуру диалогового окна уничтожает диалогового окна, она также устанавливает глобальную переменную в значение NULL, указывающее, что поле больше не действителен.

Процедуру диалогового окна не должна вызывать функцию EndDialog уничтожить немодальное диалоговое окно.

Index