Чтение онлайн

ЖАНРЫ

Русский справочник по Win32 API

Сорока Тарас

Шрифт:

Приложения создают собственные классы диалоговых окон, заполняя структуру типа 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

Функция CreateMailslot создает мэйлслот с указанным именем и возвращает дескриптор, который мэйлслотовый сервер может использовать для выполнения операций над мэйлслотом. Мэйлслот локален относительно компьютера, который его создал. Если мэйлслот с указанным именем существует, то происходит ошибка.

HANDLE CreateMailslot (

LPCTSTR lpName , // указатель на строку с именем мэйлслота

DWORD nMaxMessageSize , // максимальный размер сообщения

DWORD lReadTimeout , // миллисекунды до тайм - аута чтения

LPSECURITY_ATTRIBUTES lpSecurityAttributes // указатель

// на структуру безопасности

);

Параметры

lpName– указывает на завершающуюся нулем строку, определяющую имя мэйлслота. Строка должна иметь следующий вид:

\\.\mailslot\[path]name

Поле name должно быть уникальным. Имя может включать множественные уровни псевдодиректорий, разделенных символами обратного слэша. Например, правильными именами являются \\.\ mailslot \ example_mailslot_name и \\.\mailslot\abc\def\ghi .

nMaxMessageSize– определяет максимальный размер сообщения в байтах, которое может быть записано в мэйлслот. Для указания того, что сообщение может быть любого размера, установите значение этого параметра в нуль.

Поделиться с друзьями: