Функция CreateDialogIndirectParamA (winuser.h)

Создает немодерное диалоговое окно на основе шаблона диалогового окна в памяти. Перед отображением диалогового окна функция передает определяемое приложением значение в процедуру диалогового окна в качестве параметра lParamWM_INITDIALOG сообщения. Приложение может использовать это значение для инициализации элементов управления диалоговых окон.

Синтаксис

HWND CreateDialogIndirectParamA(
  [in, optional] HINSTANCE       hInstance,
  [in]           LPCDLGTEMPLATEA lpTemplate,
  [in, optional] HWND            hWndParent,
  [in, optional] DLGPROC         lpDialogFunc,
  [in]           LPARAM          dwInitParam
);

Параметры

[in, optional] hInstance

Тип: HINSTANCE

Дескриптор модуля, который содержит шаблон диалогового окна. Если этот параметр имеет значение NULL, используется текущий исполняемый файл.

[in] lpTemplate

Тип: LPCDLGTEMPLATE

Шаблон CreateDialogIndirectParam использует для создания диалогового окна. Шаблон диалогового окна состоит из заголовка, описывающего диалоговое окно, за которым следует один или несколько дополнительных блоков данных, описывающих каждый элемент управления в диалоговом окне. Шаблон может использовать либо стандартный, либо расширенный формат.

В стандартном шаблоне заголовок представляет собой структуру DLGTEMPLATE , за которой следуют дополнительные массивы переменной длины. Данные для каждого элемента управления состоят из структуры DLGITEMTEMPLATE , за которой следуют дополнительные массивы переменной длины.

В расширенном шаблоне диалогового окна заголовок использует формат DLGTEMPLATEEX , а определения элементов управления — формат DLGITEMTEMPLATEEX .

После возврата createDialogIndirectParam можно освободить шаблон, который используется только для запуска диалогового окна.

[in, optional] hWndParent

Тип: HWND

Дескриптор окна, которому принадлежит диалоговое окно.

[in, optional] lpDialogFunc

Тип: DLGPROC

Указатель на процедуру диалогового окна. Дополнительные сведения о процедуре диалогового окна см. в разделе DialogProc.

[in] dwInitParam

Тип: LPARAM

Значение, передаваемое в диалоговое окно в параметре lParamсообщения WM_INITDIALOG .

Возвращаемое значение

Тип: HWND

Если функция выполнена успешно, возвращаемое значение будет дескриптором окна диалогового окна.

Если функция завершается сбоем, возвращается значение 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 .

Все символьные строки в шаблоне диалогового окна, такие как заголовки диалогового окна и кнопки, должны быть строками Юникода.

Примечание

Заголовок winuser.h определяет CreateDialogIndirectParam в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-dialogbox-l1-1-0 (представлено в Windows 8)

См. также раздел

Основные понятия

CreateDialog

CreateDialogIndirect

CreateDialogParam

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

Destroywindow

Диалоговые окна

DialogProc

MultiByteToWideChar

Другие ресурсы

Справочные материалы

Showwindow

WM_INITDIALOG

WM_SETFONT