Функция CreateDialogIndirectParam создает немодальный блок диалога из шаблона диалогового окна в памяти. Перед показом диалогового окна на экране, функция передает определяемое программой значение в процедуру блока диалога в качестве параметра lParam сообщения WM_INITDIALOG. Прикладная программа может использовать это значение, чтобы инициализировать органы управления диалогового окна.
Синтаксис
HWND CreateDialogIndirectParam( HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM lParamInit ); |
Параметры
hInstance
[in] Дескриптор модуля, который создает диалоговое окно.lpTemplate
[in] Указатель на объект глобальной памяти содержащий шаблон, который CreateDialogIndirectParam использует, чтобы создать диалоговое окно. Шаблон блока диалога состоит из заголовка, который описывает блок диалога, сопровождаемого одним или несколькими дополнительными блоками данных, которые описывают каждый из органов управления в диалоговом окне. Шаблон может использовать или стандартный, или расширенный формат.В стандартном шаблоне заголовочный файл - структура DLGTEMPLATE, сопровождаемая дополнительными массивами переменной длины. Данные для каждого органа управления состоят из структуры DLGITEMTEMPLATE, сопровождаемой дополнительными массивами переменной длины.
В расширенном шаблоне диалогового окна заголовок использует формат DLGTEMPLATEEX, а определения органов управления используют формат DLGITEMTEMPLATEEX.
После того как CreateDialogIndirectParam возвратит значение, Вы можете освободить шаблон, который использован только для того, чтобы получить начальное диалоговое окно.
hWndParent
[in] Дескриптор окна, которое владеет диалоговым окном.lpDialogFunc
[in] Указатель на процедуру диалогового окна. За подробной информацией о процедуре диалогового окна обратись к описанию функции DialogProc.lParamInit
[in] Определяет значение, которое передается диалоговому окну в параметре lParam сообщения WM_INITDIALOG.Возвращаемое значение
Если функция завершается успешно, возвращаемое значение - дескриптор диалогового окна.
Если функция завершается ошибкой, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Замечания
Функция CreateDialogIndirectParam, чтобы создать диалоговое окно, использует функцию CreateWindowEx. Затем CreateDialogIndirectParam отправляет в процедуру диалогового окна сообщение WM_INITDIALOG. Если шаблон устанавливает стиль DS_SETFONT или DS_SHELLFONT, функция в процедуру диалогового окна также отправляет и сообщение WM_SETFONT. Функция показывает на экране диалоговое окно в том случае, если шаблон устанавливает стиль WS_VISIBLE. Наконец, CreateDialogIndirectParam возвращает значение дескриптора окна блока диалога.
После возвращения значения CreateDialogIndirectParam, вы можете использовать функцию ShowWindow, чтобы показать на экране диалоговое окно (если оно ещё не видимое). Чтобы разрушить диалоговое окно, используйте функцию DestroyWindow. Чтобы поддерживать перемещение с помощью клавиатуры и другие функциональные возможности диалогового окна, цикл обработки сообщений диалогового окна должен вызвать функцию IsDialogMessage.
В шаблоне стандартного диалогового окна структура DLGTEMPLATE и каждая из структур DLGITEMTEMPLATE должны быть выровнены по границам ДВОЙНОГО СЛОВА (DWORD). Созданный массив данных, который сопровождает структуру DLGITEMTEMPLATE, должен быть также выровнен по границе ДВОЙНОГО СЛОВА (DWORD). Все другие массивы переменной длины в шаблоне должны быть выровнены по границам СЛОВА (WORD).
В шаблоне расширенного диалогового окна заголовок DLGTEMPLATEEX и каждое определение органа управления DLGITEMTEMPLATEEX должны быть выровнены по границам ДВОЙНОГО СЛОВА (DWORD). Созданные массивы данных, если они есть, которые сопровождают структуру DLGITEMTEMPLATEEX, должны быть также выровнены по границам ДВОЙНОГО СЛОВА (DWORD). Все другие массивы переменной длины в шаблоне должны быть выровнены по границам СЛОВА (WORD).
Все символьные строки шаблона диалогового окна, такие как заголовок блока диалога и надписи кнопок, должны быть строками Unicode. Чтобы создать код, который работает и в Windows NT, и в Windows 95, используйте функцию MultiByteToWideChar для генерации этих строк Unicode.
Windows 95/98/Me: Система может поддерживать максимум 255 органов управления в шаблоне диалогового окна. Чтобы разместить больше чем 255 элементов управления в диалоговом окне, создавайте органы управления в обработчике сообщения WM_INITDIALOG, а не помещайте их в шаблон.
Windows 98/Me: CreateDialogIndirectParamW поддерживается программой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в описании Microsoft Layer for Unicode для системы Windows 95/98/Me.
Смотри также
Обзор Диалоговые окна, Функции, используемые
диалоговыми окнами,
CreateDialog,
CreateDialogIndirect,
CreateDialogParam,
CreateWindowEx,
DestroyWindow,
DialogBox, DialogProc,
DLGITEMTEMPLATE,
DLGITEMTEMPLATEEX,
DLGTEMPLATE,
DLGTEMPLATEEX,
IsDialogMessage
Размещение и совместимость CreateDialogIndirectParam |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |