Поделиться через


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

Создает диалоговое окно без режима из шаблона диалогового окна в памяти. Перед отображением диалогового окна функция передает определяемое приложением значение в процедуру диалогового окна в качестве параметра lParam сообщения WM_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 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка 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