Функция DialogBoxIndirectParamA (winuser.h)
Создает модальное диалоговое окно на основе шаблона диалогового окна в памяти. Перед отображением диалогового окна функция передает определяемое приложением значение в процедуру диалогового окна в качестве параметра lParamWM_INITDIALOG сообщения. Приложение может использовать это значение для инициализации элементов управления диалоговых окон.
Синтаксис
INT_PTR DialogBoxIndirectParamA(
[in, optional] HINSTANCE hInstance,
[in] LPCDLGTEMPLATEA hDialogTemplate,
[in, optional] HWND hWndParent,
[in, optional] DLGPROC lpDialogFunc,
[in] LPARAM dwInitParam
);
Параметры
[in, optional] hInstance
Тип: HINSTANCE
Дескриптор модуля, создающего диалоговое окно.
[in] hDialogTemplate
Тип: LPCDLGTEMPLATE
Шаблон, который DialogBoxIndirectParam использует для создания диалогового окна. Шаблон диалогового окна состоит из заголовка, описывающего диалоговое окно, за которым следует один или несколько дополнительных блоков данных, описывающих каждый элемент управления в диалоговом окне. Шаблон может использовать либо стандартный, либо расширенный формат.
В стандартном шаблоне диалогового окна заголовок представляет собой структуру DLGTEMPLATE , за которой следуют дополнительные массивы переменной длины. Данные для каждого элемента управления состоят из структуры DLGITEMTEMPLATE , за которой следуют дополнительные массивы переменной длины.
В расширенном шаблоне для диалогового окна заголовок использует формат DLGTEMPLATEEX , а определения элементов управления — формат DLGITEMTEMPLATEEX .
[in, optional] hWndParent
Тип: HWND
Дескриптор окна, которому принадлежит диалоговое окно.
[in, optional] lpDialogFunc
Тип: DLGPROC
Указатель на процедуру диалогового окна. Дополнительные сведения о процедуре диалогового окна см. в разделе DialogProc.
[in] dwInitParam
Тип: LPARAM
Значение, передаваемое в диалоговое окно в параметре lParamсообщения WM_INITDIALOG .
Возвращаемое значение
Тип: INT_PTR
Если функция выполняется успешно, возвращаемым значением будет параметр nResult , указанный в вызове функции EndDialog , которая использовалась для завершения диалогового окна.
Если функция завершается ошибкой из-за недопустимого параметра hWndParent , возвращаемое значение равно нулю. Функция возвращает ноль в этом случае для совместимости с предыдущими версиями Windows. Если функция завершается сбоем по какой-либо другой причине, возвращается значение –1. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Функция DialogBoxIndirectParam использует функцию CreateWindowEx для создания диалогового окна. Затем DialogBoxIndirectParam отправляет WM_INITDIALOG сообщение в процедуру диалогового окна. Если шаблон задает стиль DS_SETFONT или DS_SHELLFONT, функция также отправляет WM_SETFONT сообщение в процедуру диалогового окна. Функция отображает диалоговое окно (независимо от того, указывает ли шаблон стиль WS_VISIBLE ), отключает окно владельца и запускает собственный цикл сообщений для получения и отправки сообщений для диалогового окна.
Когда процедура диалогового окна вызывает функцию EndDialog , DialogBoxIndirectParam уничтожает диалоговое окно, завершает цикл сообщений, включает окно владельца (если оно включено ранее) и возвращает параметр nResult , заданный процедурой диалогового окна при вызове метода EndDialog.
В стандартном шаблоне диалогового окна структура DLGTEMPLATE и каждая из структур DLGITEMTEMPLATE должны быть выровнены по границам DWORD . Массив данных создания, следующий за структурой DLGITEMTEMPLATE , также должен быть выровнен по границе DWORD . Все остальные массивы переменной длины в шаблоне должны быть выровнены по границам WORD .
В расширенном шаблоне диалогового окна заголовок DLGTEMPLATEEX и каждое из определений элемента управления DLGITEMTEMPLATEEX должны быть выровнены по границам DWORD . Создаваемый массив данных (при наличии), следующий за структурой DLGITEMTEMPLATEEX , также должен быть выровнен по границе DWORD . Все остальные массивы переменной длины в шаблоне должны быть выровнены по границам WORD .
Все символьные строки в шаблоне диалогового окна, такие как заголовки диалогового окна и кнопки, должны быть строками Юникода.
Примечание
Заголовок winuser.h определяет DialogBoxIndirectParam в качестве псевдонима, который автоматически выбирает версию 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) |
См. также раздел
Основные понятия
Справочные материалы