В стандартном шаблоне заголовок представляет собой структуру 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. Массив данных, находящийся после структуры DLGITEMTEMPLATE, также должен быть выровнен по DWORD. Все остальные массивы переменной длины в шаблоне должны быть выровнены по WORD.
Все строки символов в шаблоне диалогового окна, такие как заголовки для диалогового окна и кнопок, должны быть строками UnicodE. Для написания кода, который работает как в Windows NT, так и в Windows 95, используйте функцию MultiByteToWideCharдля создания строк UnicodE.
Windows 95:Система поддерживает максимум 16384 дескрипторов окон.
См. также
CreateDialog, CreateDialogIndirect, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT.
Функция DefDlgProcвыполняет обработку сообщений по умолчанию для оконной процедуры, принадлежащей определяемому приложением классу диалогового окна.
LRESULT DefDlgProc(
HWND hDlg , // дескриптор диалогового окна
UINT Msg , // сообщение
WPARAM wParam , // первый параметр сообщения
LPARAM lParam // второй параметр сообщения
);
Параметры
hDlg - идентифицирует диалоговое окно.
uMsg - определяет сообщение.
wParam - определяет дополнительную информацию, зависящую от сообщения.
lParam - определяет дополнительную информацию, зависящую от сообщения.
Возвращаемые значения
Возвращаемое значение определяет результат обработки сообщения и зависит от переданного сообщения.
Комментарии
Функция DefDlgProcявляется оконной процедурой для предопределенного класса диалогового окна. Эта процедура обеспечивает внутреннюю обработку для диалогового окна, перенаправляя сообщения оконной процедуре диалогового окна и производя обработку по умолчанию для сообщения, при обработке которого оконная процедура возвращает FALSE. Приложения, которые создают диалоговые окна на основе своих собственных классов диалоговых окон, часто используют DefDlgProcвместо DefWindowProcдля обработки сообщений по умолчанию.
Приложения создают собственные классы диалоговых окон, заполняя структуру типа WNDCLASSсоответствующей информацией и регистрируя класс с помощью функции RegisterClass. Некоторые приложения заполняют структуру, используя функцию GetClassInfo, указывая имя предопределенного диалогового окна. В таких случаях, приложения модифицируют, по меньшей мере, член lpszClassName перед регистрацией. И во всех случаях, член cbWndExtra структуры типа WNDCLASSдля создаваемых приложением классов диалоговых окон, должен быть установлен, по меньшей мере в DLGWINDOWEXTRA .
Читать дальше