Функция CreateDialogIndirect

Макрокоманда CreateDialogIndirect создает немодальное диалоговое окно из шаблона блока диалога в памяти. Макрокоманда CreateDialogIndirect использует функцию CreateDialogIndirectParam.

Синтаксис

HWND CreateDialogIndirect(
    HINSTANCE hInstance,
    LPCDLGTEMPLATE lpTemplate,
    HWND hWndParent,
    DLGPROC lpDialogFunc
);

Параметры

hInstance

[in] Дескриптор модуля, который создает диалоговое окно.

lpTemplate

[in] Указатель на объект глобальной памяти, содержащий шаблон, который CreateDialogIndirect использует для создания диалогового окна. Шаблон диалогового окна состоит из заголовка, который описывает блок диалога, сопровождаемый одним или несколькими дополнительными блоками данных, которые описывают каждый орган управления в диалоговом окне. Шаблон можно использоваться или в стандартном или в расширенном формате.

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

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

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

hWndParent

[in] Дескриптор окна, которое владеет диалоговым окном.

lpDialogFunc

[in] Указатель на процедуру диалогового окна. Дополнительную информацию о процедуре диалогового окна, см. в описании DialogProc.

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

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

Если функция завершается ошибкой, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

Замечания

Макрос 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).

Все строки символов в шаблоне диалогового окна, такие как заголовки для диалогового окна и кнопок, должны быть символьными строками Unicode. Чтобы создать код, который работает и в среде Microsoft ® Windows ® 95/98/Me и в среде Windows NT / 2000/XP, используйте функцию MultiByteToWideChar, чтобы генерировать эти символьные строки Unicode.

Windows 95/98/Me: Система может поддерживать максимум 255 органов управления в шаблоне диалогового окна. Чтобы разместить больше чем 255 элементов управления в диалоговом окне, создавайте органы управления в обработчике сообщения  WM_INITDIALOG, а не помещайте их в шаблон.

Смотри также 

Обзор Диалоговые окнаФункции, используемые диалоговыми окнами, CreateDialog, CreateDialogIndirectParam, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogBox, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, IsDialogMessage, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT 

Размещение и совместимость CreateDialogIndirect

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

User32.lib

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz