Страница 3 из 43 Функция CreateDialogIndirect (СозданиеДиалогаКосвенно) Макрокоманда CreateDialogIndirect создает немодальное диалоговое окно из шаблона блока диалога в памяти. Макрокоманда CreateDialogIndirect использует функцию CreateDialogIndirectParam. Синтаксис HWND CreateDialogIndirect ( HINSTANCE hInstance,// дескриптор экземпляра прикладной программы LPCDLGTEMPLATE lpTemplate,// указатель на шаблон блока диалога HWND hWndParent,// дескриптор окна владельца DLGPROC lpDialogFunc // указатель на процедуру диалогового окна );
Параметры hInstance Идентифицирует экземпляр модуля, который создает диалоговое окно. lpTemplate Указатель на объект глобальной памяти, содержащий шаблон, который CreateDialogIndirect использует для создания диалогового окна. Шаблон диалогового окна состоит из заголовка, который описывает блок диалога, сопровождаемый одним или несколькими дополнительными блоками данных, которые описывают каждый орган управления в диалоговом окне. Шаблон можно использовать или в стандартном или в расширенном формате. В стандартном шаблоне заголовок - структура DLGTEMPLATE, сопровождаемая дополнительными массивами переменной длины. Данные для каждого органа управления состоят из структуры DLGITEMTEMPLATE, сопровождаемой дополнительными массивами переменной длины. В расширенном шаблоне диалогового окна, заголовок использует формат DLGTEMPLATEEX, а определения органа управления используют формат DLGITEMTEMPLATEEX. hWndParent Идентифицирует окно, которое владеет блоком диалога. lpDialogFunc Указывает на процедуру диалогового окна. За более подробной информацией о процедуре диалогового окна обратитесь к статье DialogProc. Возвращаемые значения Если функция завершает работу успешно, возвращаемое значение - дескриптор окна блока диалога. Если функция терпит неудачу, возвращаемое значение ПУСТО (NULL) Замечания Макрокоманда CreateDialogIndirect использует функцию CreateWindowEx, чтобы создать диалоговое окно. Затем CreateDialogIndirect отправляет сообщение WM_INITDIALOG в процедуру диалогового окна. Если шаблон определяет стиль DS_SETFONT, то функция к тому же в процедуру диалогового окна отправляет сообщение WM_SETFONT. Функция отображает на экране диалоговое окно в том случае, если шаблон определяет стиль WS_VISIBLE. В конце концов, CreateDialogIndirect возвращает значение дескриптора окна блока диалога. После того как CreateDialogIndirect возвратит значение, вы можете использовать функцию ShowWindow, чтобы отобразить на экране диалоговое окно (если оно еще не видимое). Чтобы разрушить диалоговое окно, используйте функцию DestroyWindow. В шаблоне стандартного диалогового окна, в структуре DLGTEMPLATE и в каждой из структур DLGITEMTEMPLATE должно быть сделано выравнивание по границам ДВОЙНОГО СЛОВА (DWORD). Массив данных создания, который следует за структурой DLGITEMTEMPLATE, должен также быть выровнен по границе ДВОЙНОГО СЛОВА (DWORD). Все другие массивы переменной длины в шаблоне должны быть выровненными по границам СЛОВА (WORD). В расширенном шаблоне диалогового окна заголовок DLGTEMPLATEEX и каждое определение DLGITEMTEMPLATEEX органа управления должны быть выровнены по границам ДВОЙНОГО СЛОВА (DWORD). Массив данных создания, если имеется, который сопровождает структуру DLGITEMTEMPLATEEX, должен также быть выровнен по границам ДВОЙНОГО СЛОВА (DWORD). Все другие массивы переменной длины в шаблоне должны быть выровнены по границам СЛОВА (WORD). Все символьные строки в шаблоне блока диалога, такие как заголовки диалоговых окон и названия кнопок, должны быть строками Уникода. Чтобы создать код, который работает и в Windows NT и Windows 95, для создания этих строк Уникода используйте функцию MultiByteToWideChar. Windows 95: система может поддерживать максимум 16,364 дескрипторов окна. Смотри также CreateDialog, CreateDialogIndirectParam, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT Размещение и совместимость CreateDialogIndirect Windows NTДа Win95Да Win32sДа Импортируемая библиотекаuser32.lib Заголовочный файлwinuser.h UnicodeWinNT Замечания по платформеНе имеется |