Сообщение WM_INITDIALOG

Система does не отправки сообщений WM_CREATE сообщение в процедуру диалогового окна. Вместо этого он посылает сообщение WM_INITDIALOG при создании диалогового окна и все его элементы, но до того, как он отображает диалоговое окно. Процедура должна проводить любой инициализации, необходимые для обеспечения диалогового окна отображает текущие параметры, связанные с командой или задачи. К примеру когда диалоговое окно содержит элемент управления для отображения текущего диска и каталога, процедура должна определить текущий диск и каталог и присвоить это значение элемента управления.

Эта процедура может инициализировать элементы управления с помощью функций, таких как SetDlgItemText и CheckDlgButton. Так как элементы управления windows, эта процедура также ими можно было управлять с помощью окна управления такие функции, как EnableWindow и SetFocus. Эта процедура может получить дескриптор окна для элемента управления, используя функцию GetDlgItem.

Процедуру диалогового окна можно изменить содержимое, состояние и положение любого элемента управления, в случае необходимости. К примеру в диалоговом окне, содержащий список имен файлов и кнопка Открыть, процедура можно отключить кнопку Открыть до тех пор, пока пользователь выбирает файл из списка. В этом примере диалоговое окно поле шаблон определяет стиль WS_DISABLED для кнопки Открыть, и система автоматически отключает кнопку при его создании. Когда процедуру диалогового окна получает сообщение с уведомлением из списка указывающее, что пользователь выбрал файл, процедура вызывает функцию EnableWindow для того, чтобы на кнопку Открыть.

Чтобы отобразить пользовательский значок в строке заголовка диалогового окна, WM_INITDIALOG обработчик может отправить сообщение WM_SETICON в диалоговое.

Если приложение создает диалогового окна, используя одну из функций DialogBoxParam, DialogBoxIndirectParam, CreateDialogParamили CreateDialogIndirectParam, параметр lParam на сообщение WM_INITDIALOG содержит дополнительный параметр, передаваемый в функцию. Приложения обычно используют этот дополнительный параметр для передачи адреса дополнительной инициализации информации процедуру диалогового окна, однако процедуру диалогового окна необходимо определить значение параметра. Если приложение использует другой функции для создания диалогового окна, система устанавливает параметр lParam в NULL.

Прежде чем возвратить сообщение WM_INITDIALOG , процедура должна определить ли он должен установить фокус ввода на данный элемент управления. Если диалоговое окно поле процедура возвращает значение TRUE, система автоматически устанавливает фокус ввода на элементе управления, которого дескриптор окна находится в параметре wParam . Если элемент управления получает фокус по умолчанию не подходит, то можно установить фокус соответствующий элемент управления, используя функцию SetFocus . Если процедура устанавливает фокус ввода, он должен возвращать значение FALSE, чтобы запретить системе задавать фокус по умолчанию. Получает значение по умолчанию элемента управления ввода фокус всегда первый элемент управления в шаблон, видно, не отключена, и WS_TABSTOP стиле. Если такой контроль не существует, система устанавливает фокус ввода по умолчанию на первый элемент управления в шаблоне.

Index