Страница 4 из 43 Функция 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 UnicodeWinNT Замечания по платформеНе имеется |