Функция DialogBoxIndirectParam 


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

Синтаксис

INT_PTR DialogBoxIndirectParam(
    HINSTANCE hInstance,
    LPCDLGTEMPLATE hDialogTemplate,
    HWND hWndParent,
    DLGPROC lpDialogFunc,
    LPARAM dwInitParam
);

Параметры

hInstance

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

hDialogTemplate

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

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

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

hWndParent

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

lpDialogFunc

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

dwInitParam

[in] Устанавливает значение, которое передается в диалоговое окно в параметре lParam сообщения WM_INITDIALOG.

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

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

Если функция завершается ошибкой, потому что параметр hWndParent недопустим, возвращаемое значение равняется нулю. В этой ситуации функция возвращает нуль  для совместимости с предыдущими версиями Microsoft ® 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).

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

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

Windows 95/98/Me: DialogBoxIndirectParamW поддерживается программой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в описании Microsoft Layer for Unicode для системы Windows 95/98/Me.

Смотри также 

Обзор Диалоговые окна, Функции, используемые диалоговыми окнами, CreateWindowEx, DialogBox, DialogBoxIndirect, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT 

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

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