Макрос CreateDialogIndirectA (winuser.h)
Создает немодное диалоговое окно на основе шаблона диалогового окна в памяти. Макрос CreateDialogIndirect использует функцию CreateDialogIndirectParam.
Синтаксис
void CreateDialogIndirectA(
[in, optional] hInstance,
[in] lpTemplate,
[in, optional] hWndParent,
[in, optional] lpDialogFunc
);
Параметры
[in, optional] hInstance
Тип: HINSTANCE
Дескриптор модуля, создающего диалоговое окно.
[in] lpTemplate
Тип: LPCDLGTEMPLATE
Шаблон, который createDialogIndirect использует для создания диалогового окна. Шаблон диалогового окна состоит из заголовка, описывающего диалоговое окно, за которым следует один или несколько дополнительных блоков данных, описывающих каждый элемент управления в диалоговом окне. Шаблон может использовать либо стандартный, либо расширенный формат.
В стандартном шаблоне заголовок представляет собой структуру DLGTEMPLATE , за которой следуют дополнительные массивы переменной длины. Данные для каждого элемента управления состоят из структуры DLGITEMTEMPLATE , за которой следуют дополнительные массивы переменной длины.
В расширенном шаблоне диалогового окна заголовок использует формат DLGTEMPLATEEX , а определения элементов управления — формат DLGITEMTEMPLATEEX .
После возврата createDialogIndirect можно освободить шаблон, который используется только для запуска диалогового окна.
[in, optional] hWndParent
Тип: HWND
Дескриптор для окна, которому принадлежит диалоговое окно.
[in, optional] lpDialogFunc
Тип: DLGPROC
Указатель на процедуру диалогового окна. Дополнительные сведения о процедуре диалогового окна см. в разделе DialogProc.
Возвращаемое значение
None
Remarks
Макрос CreateDialogIndirect использует функцию CreateWindowEx для создания диалогового окна. Затем CreateDialogIndirect отправляет WM_INITDIALOG сообщение в процедуру диалогового окна. Если шаблон задает стиль DS_SETFONT или DS_SHELLFONT, функция также отправляет WM_SETFONT сообщение в процедуру диалогового окна. Функция отображает диалоговое окно, если шаблон задает стиль WS_VISIBLE. Наконец, CreateDialogIndirect возвращает дескриптор окна в диалоговое окно.
После возврата CreateDialogIndirect можно использовать функцию ShowWindow для отображения диалогового окна (если оно еще не отображается). Чтобы уничтожить диалоговое окно, используйте функцию DestroyWindow . Для поддержки навигации с помощью клавиатуры и других функций диалогового окна цикл сообщений для диалогового окна должен вызывать функцию IsDialogMessage .
В стандартном шаблоне диалогового окна структура DLGTEMPLATE и каждая из структур DLGITEMTEMPLATE должны быть выровнены по границам DWORD . Массив данных создания, следующий за структурой DLGITEMTEMPLATE , также должен быть выровнен по границе DWORD . Все остальные массивы переменной длины в шаблоне должны быть выровнены по границам WORD .
В расширенном шаблоне диалогового окна заголовок DLGTEMPLATEEX и каждое из определений элементов управления DLGITEMTEMPLATEEX должны быть выровнены по границам DWORD . Массив данных создания , если таковой имеется, следующий за структурой DLGITEMTEMPLATEEX , также должен быть выровнен по границе DWORD . Все остальные массивы переменной длины в шаблоне должны быть выровнены по границам WORD .
Все символьные строки в шаблоне диалогового окна, например заголовки диалогового окна и кнопки, должны быть строками Юникода. Используйте функцию MultiByteToWideChar для создания строк Юникода из строк ANSI.
Примечание
Заголовок winuser.h определяет CreateDialogIndirect в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
См. также раздел
Основные понятия
Другие ресурсы
Справочные материалы