В стандартном шаблоне диалогового окна структура 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
Функция 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 .
Функция DefDlgProc не должна вызываться оконной процедурой диалогового окна - это приведет к рекурсивным вызовам этих двух функций.
См. также
DefWindowProc, GetClassInfo, RegisterClass, WNDCLASS .
GetDialogBaseUnits
Функция GetDialogBaseUnits возвращает базовые координаты диалогового окна, используемые Windows для создания диалоговых окон. И Windows, и приложения используют эти координаты для преобразования ширины и высоты диалоговых окон и находящихся в них элементов управления из оконных координат, указанных в шаблонах диалоговых окон, в пиксели, и обратно.
LONG GetDialogBaseUnits ( VOID )
Параметры
Функция не имеет параметров.
Возвращаемые значения
Возвращается 32-битное значение, содержащее базовые координаты диалогового окна. Младшее слово возвращаемого значения содержит горизонтальные базовые координаты диалогового окна, старшее слово - вертикальные.
Комментарии
Горизонтальные базовые координаты диалогового окна равны средней ширине, в пикселях, символов системного шрифта, вертикальные - средней высоте символов системного шрифта. К тому же, горизонтальная базовая координата равна четырем горизонтальным оконным координатам диалогового окна, вертикальная базовая координата - восьми вертикальным оконным координатам диалогового окна. Таким образом, преобразование оконных координат в пиксели происходит по формулам:
пиксель X = (диалоговая_координата X * базовая_координата X ) / 4
пиксель Y = (диалоговая_координата Y * базовая_координата Y ) / 8
Аналогично происходит преобразование пикселей в оконные координаты:
диалоговая_координата X = (пиксель X * 4) / базовая_координата X
диалоговая_координата Y = (пиксель Y * 8) / базовая_координата Y
См. также
MapDialogRect .
GetDlgCtrlID
Функция GetDlgCtrlID возвращает идентификатор заданного элемента управления.
int GetDlgCtrlID (
HWND hwndCtl // дескриптор элемента управления
);
Параметры
hwndCtl - идентифицирует элемент управления.
Возвращаемые значения
В случае успеха возвращается идентификатор элемента управления.
В случае неудачи возвращается NULL . Вызов функции также закончится неудачей при неверном значении параметра hwndCtl .
Комментарии
GetDlgCtrlID также принимает в качестве параметров и дескрипторы дочерних окон, наравне с дескрипторами элементов управления в диалоговых окнах. Приложение устанавливает идентификатор для дочернего окна, присваивая значение идентификатора параметру hMenu при вызове функций CreateWindow или CreateWindowEx .
Хотя функция GetDlgCtrlID может вернуть значение в случае, если параметр hwndCtl идентифицирует окно верхнего уровня, такие окна не могут иметь идентификаторов и, соответственно, не будет возвращено правильного значения.
См . также
CreateWindow, CreateWindowEx, GetDlgItem .
Мэйлслоты
CreateMailslot