6.31.1.3 - Функция CreateDialogIndirectParam

(СоздатьДиалогКосвенноПараметрами)

Функция CreateDialogIndirectParam создает немодальный блок диалога из шаблона диалогового окна в памяти. Перед отображением диалогового окна на экране, функция передает определяемое программой значение в процедуру диалогового окна в качестве параметра lParam сообщения WM_INITDIALOG. Прикладная программа может использовать это значение, чтобы инициализировать элементы управления диалогового окна.

Синтаксис

HWND CreateDialogIndirectParam
(
	HINSTANCE hInstance,			// дескриптор экземпляра прикладной программы
	LPCDLGTEMPLATE lpTemplate,		// указатель на шаблон блока диалога
	HWND hWndParent,			// дескриптор окна владельца
	DLGPROC lpDialogFunc,			// указатель на процедуру диалогового окна
	LPARAM lParamInit 			// инициализационное значение
);

Параметры
hInstance
Идентифицирует экземпляр модуля, который должен создать диалоговое окно.
lpTemplate
Указатель на объект глобальной памяти содержащий шаблон, который использует CreateDialogIndirectParam, чтобы создать диалоговое окно. Шаблон блока диалога состоит из заголовка, который описывает блок диалога, сопровождаемого одним или несколькими дополнительными блоками данных, которые описывают каждый из органов управления в диалоговом окне. Шаблон может использовать или стандартный или расширенный формат.
В стандартном шаблоне заголовок является структурой DLGTEMPLATE, сопровождаемой дополнительными массивами переменной длины. Данные для каждого органа управления состоят из структуры DLGITEMTEMPLATE, сопровождаемой дополнительными массивами переменной длины.
В расширенном шаблоне диалогового окна заголовок использует формат DLGTEMPLATEEX, а определения элемента управления используют формат DLGITEMTEMPLATEEX.
hWndParent
Идентифицирует окно, которое владеет диалоговым окном.
lpDialogFunc
Указывает на процедуру диалогового окна. За подробной информацией о процедуре диалогового окна обратись к статье DialogProc.
lParamInit
Определяет значение, которое передается диалоговому окну в параметре lParam сообщения WM_INITDIALOG.

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

Замечания
Функция CreateDialogIndirectParam, чтобы создать диалоговое окно, использует функцию CreateWindowEx. Затем CreateDialogIndirectParam отправляет в процедуру диалогового окна сообщение WM_INITDIALOG. Если шаблон определяет стиль DS_SETFONT, функция к тому же в процедуру диалогового окна отправляет сообщение WM_SETFONT. Функция отображает на экране диалоговое окно в том случае, если шаблон устанавливает стиль WS_VISIBLE. В конце концов, CreateDialogIndirectParam возвращает значение дескриптора окна блока диалога.
После возвращения значения CreateDialogIndirectParam, вы можете использовать функцию ShowWindow, чтобы показать на экране диалоговое окно (если оно ещё не видимое). Чтобы разрушить диалоговое окно, используйте функцию DestroyWindow.
В шаблоне стандартного диалогового окна структура DLGTEMPLATE и каждая из структур DLGITEMTEMPLATE должны быть выровнены по границам ДВОЙНОГО СЛОВА (DWORD). Массив данных создания, который сопровождает структуру DLGITEMTEMPLATE, должен быть также выровнен по границе ДВОЙНОГО СЛОВА (DWORD). Все другие массивы переменной длины в шаблоне должны быть выровнены по границам СЛОВА (WORD).
В шаблоне расширенного диалогового окна заголовок DLGTEMPLATEEX и каждое определение элемента управления DLGITEMTEMPLATEEX должны быть выровнены по границам ДВОЙНОГО СЛОВА (DWORD). Массив данных создания, если он есть, который сопровождает структуру DLGITEMTEMPLATEEX, должен быть также выровнен по границам ДВОЙНОГО СЛОВА (DWORD). Все другие массивы переменной длины в шаблоне должны быть выровнены по границам СЛОВА (WORD).
Все символьные строки шаблона диалогового окна, такие как заголовок блока диалога и надписи кнопок, должны быть строками Уникода. Чтобы создать код, который работает и Windows NT и Windows 95, используйте функцию MultiByteToWideChar для генерации этих строк Уникода.

Windows 95: Система может поддерживать максимум 16,364 дескрипторов окна.

Смотри также
CreateDialog, CreateDialogIndirect, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT

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

Windows NT				Да 
Win95					Да 
Win32s					Да 
Импортируемая библиотека			user32.lib 
Заголовочный файл				winuser.h 
Unicode					WinNT 
Замечания по платформе			Не имеется

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 11.06.2002