Пространство координат и преобразования



 

ClientToScreen

 

 

Функция ClientToScreen преобразует клиентские координаты указанной точки в экранные координаты.

 

BOOL ClientToScreen (

 

HWND  hWnd , // дескриптор окна для исходных координат

LPPOINT  lpPoint // указатель на структуру, содержащую

// экранные координаты

);

 

Параметры

 

hWnd ‑ идентифицирует окно, чья клиентская область используется для преобразования.

lpPoint ‑ указывает на структуру типа POINT , которая содержит преобразуемые координаты. В случае успеха в эту структуру копируются новые экранные координаты.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль.

 

Комментарии

 

Функция ClientToScreen замещает клиентские координаты в структуре типа POINT экранными координатами. Экранные координаты относительны верхнего левого угла экрана.

 

См. также

 

MapWindowPoints, POINT, ScreenToClient .

 

 

CombineTransform

 

 

Функция CombineTransform объединяет два преобразования " мировое пространство ‑ пространство страницы " (world‑space to page‑space transformations).

 

BOOL CombineTransform (

 

LPXFORM  lpxformResult , // указатель на комбинированное преобразование

CONST XFORM * lpxform  1 , // указатель на первое преобразование

CONST XFORM * lpxform  2 // указатель на второе преобразование

);

 

Параметры

 

lpxformResult ‑ указывает на структуру типа XFORM , которая получает комбинированное преобразование.

lpxform  1 ‑ указывает на структуру типа XFORM , которая идентифицирует первое преобразование.

lpxform  2 ‑ указывает на структуру типа XFORM , которая идентифицирует второе преобразование.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль.

 

Комментарии

 

Применение комбинированного преобразования аналогично применению сначала первого преобразования, затем второго.

Три преобразования не обязательно должны быть раздельными. Например, lpxform  1 может указывать на ту же структуру типа XFORM , что и lpxformResult .

 

См. также

 

GetWorldTransform, ModifyWorldTransform, SetWorldTransform, XFORM .

 

 

GetGraphicsMode

 

 

Функция GetGraphicsMode извлекает текущий графический режим для указанного контекста устройства.

 

int GetGraphicsMode (

 

HDC  hdc // дескриптор контекста устройства

);

 

Параметры

 

hdc ‑ идентифицирует контекст устройства.

 

Возвращаемые значения

 

В случае успеха возвращается текущий графический режим. Он может быть представлен одним из следующих значений:

 

 

 Значение   Пояснение  
GM _ COMPATIBLE   Текущий графический режим является совместимым с Windows 3.1 режимом. В этом графическом режиме приложение не может установить или изменить мировое преобразование ( world transformation ) в указанном контексте устройства. Совместимый режим является графическим режимом по умолчанию.  
GM_ADVANCED   Windows NT : Текущий графический режим является расширенным режимом, разрешающим мировые преобразования. В этом графическом режиме приложение может установить или изменить мировое преобразование в указанном контексте устройства. Windows 95: Значение GM _ ADVANCED не поддерживается.  

 

В противном случае, возвращается нуль.

 

Комментарии

 

Приложение может установить графический режим для контекста устройства, вызвав функцию SetGraphicsMode .

 

См. также

 

SetGraphicsMode .

 

Буфер обмена

 

ChangeClipboardChain

 

 

Функция ChangeClipboardChain удаляет указанное окно из цепочки просмотра буфера обмена.

 

BOOL ChangeClipboardChain (

HWND  hWndRemove ,

HWND  hWndNewNext

);

 

Параметры

 

hWndRemove ‑ дескриптор окна, которое будет удалено из цепочки. Дескриптор должен был быть передан в функцию SetClipboardViewer .

hWndNewNext ‑ дескриптор окна, которое следует за окном, определяемым значением параметра hWndRemove , в цепочке просмотра буфера обмена. (Это дескриптор, возвращенный функцией SetClipboardViewer , если только последовательность не была изменена в ответ на сообщение WM_CHANGECBCHAIN .)

 

Возвращаемые значения

 

Возвращаемое значение показывает результат передачи сообщения WM_CHANGECBCHAIN окну в цепочке просмотра буфера обмена. Поскольку окно в цепочке типично возвращает FALSE, когда оно обрабатывает сообщение WM_CHANGECBCHAIN, типично возвращаемое функцией ChangeClipboardChain значение ‑ тоже FALSE. Если в цепочке просмотра одно окно ‑ типично возвращается TRUE.

 

Комментарии

 

Окно, идентифицируемое значением параметра hWndNewNext , заменяет окно, идентифицируемое значением параметра hWndRemove , в цепочке просмотра. Функция SetClipboardViewer отправляет сообщение WM_CHANGECBCHAIN первому окну в цепочке просмотра буфера обмена.

 

Требования

 

Windows NT/2000/XP: Включена в Windows NT 3.1 и выше.

Windows 95/98/Me: Включена в Windows 95 и выше.

Заголовок: Объявлена в Winuser.h ; подключатьWindows.h.

Библиотека: Используйте User32.lib .

 

См . также

 

SetClipboardViewer , WM_CHANGECBCHAIN.

 

 

CloseClipboard

 

 

Функция CloseClipboard закрывает буфер обмена.

 

BOOL CloseClipboard (VOID)

 

Параметры

 

Функция не имеет параметров.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

Комментарии

 

Когда окно закончило проверку или изменение содержимого буфера обмена, закройте его, вызвав CloseClipboard . Это позволит другим окнам получить доступ к буферу обмена.

Не помещайте объект в буфер обмена после вызова CloseClipboard .

 

См. также

 

GetOpenClipboardWindow, OpenClipboard .

 

 

CountClipboardFormats

 

 

Функция CountClipboardFormats извлекает число различных форматов данных в буфере обмена в настоящий момент

 

int CountClipboardFormats ( VOID )

Параметры

 

Функция не имеет параметров.

 

Возвращаемые значения

 

В случае успеха возвращается количество различных форматов данных в буфере обмена в настоящий момент.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

См. также

 

EnumClipboardFormats, RegisterClipboardFormat .

 

 

GetClipboardFormatName

 

 

Функция GetClipboardFormatName извлекает из буфера обмена имя указанного зарегистрированного формата. Функция копирует имя в указанный буфер.

 

int GetClipboardFormatName (

 

UINT  format , // извлекаемый формат буфера обмена

LPTSTR  lpszFormatName , // адрес буфера для имени

int  cchMaxCount // длина строки имени в символах

);

 

Параметры

 

format ‑ определяет тип извлекаемого формата. Значение этого параметра не должно указывать на один из ранее предопределенных форматов.

lpszFormatName ‑ указывает на буфер, который получает имя формата.

cchMaxCount ‑ определяет максимальную длину строки, скопированной в буфер, в символах. Если имя превышает этот предел, лишние символы строки отбрасываются.

 

Возвращаемые значения

 

В случае успеха возвращается длина скопированной в буфер строки в символах.

В случае неудачи возвращается нуль, указывая, что затребованный формат не существует или является ранее предопределенным форматом. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

См. также

 

EnumClipboardFormats, RegisterClipboardFormat .

 

 

GetClipboardOwner

 

 

Функция GetClipboardOwner извлекает дескриптор окна, являющегося текущим владельцем буфера обмена.

 

HWND GetClipboardOwner ( VOID )

Параметры

 

Функция не имеет параметров.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор окна, которое владеет буфером обмена.

В случае неудачи возвращается NULL . Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

Комментарии

 

Буфер обмена может содержать данные, даже если им в настоящий момент никто не владеет.

В общем, владельцем буфера обмена является окно, которое последним поместило данные в него. Функция EmptyClipboard назначает владение буфером обмена.

 

См. также

 

EmptyClipboard, GetClipboardViewer .

 

Время

 

CompareFileTime

 

 

Функция CompareFileTime сравнивает два 64‑битных файловых времени.

 

LONG CompareFileTime (

 

CONST FILETIME * lpFileTime1 , // pointer to first file time

CONST FILETIME * lpFileTime2 // pointer to second file time

);

 

Параметры

 

lpFileTime  1 ‑ указывает на структуру типа FILETIME , которая определяет первое 64‑битное файловое время.

lpFileTime  2 ‑ указывает на структуру типа FILETIME , которая определяет второе 64‑битное файловое время.

 

Возвращаемые значения

 

В случае успеха возвращается одно из следующих значений:

 

 

 Значение   Пояснение  
‑1   Первое время меньше второго.  
0   Времена равны.  
+1   Первое время больше второго.  

 

См. также

 

GetFileTime, FILETIME .

 

 

GetFileTime

 

 

Функция GetFileTime извлекает дату и время файла, когда он был создан, когда к нему последний раз обращались, и когда он последний раз был изменен.

 

BOOL GetFileTime (

 

HANDLE  hFile , // идентифицирует файл

LPFILETIME  lpCreationTime , // адрес времени создания файла

LPFILETIME  lpLastAccessTime , // адрес времени последнего доступа

// к файлу

LPFILETIME  lpLastWriteTime // адрес времени последней записи в файл

);

 

Параметры

 

hFile ‑ идентифицирует файл, для которого извлекаются дата и время. Файловый дескриптор должен быть создан с доступом GENERIC_READ к файлу.

lpCreationTime ‑ указывает на структуру типа FILETIME , которая получает дату и время создания файла. Значение этого параметра может быть равно NULL, если приложению не требуется эта информация.

lpLastAccessTime ‑ указывает на структуру типа FILETIME , которая получает дату и время последнего доступа к файлу. Время последнего доступа включает в себя время, когда в последний раз: в файл записывалась информация, читалась информация из файла, или, в случае исполняемых файлов, файл запускался на исполнение. Значение этого параметра может быть равно NULL, если приложению не требуется эта информация.

lpLastWriteTime ‑ указывает на структуру типа FILETIME , которая получает дату и время последней записи в файл. Значение этого параметра может быть равно NULL, если приложению не требуется эта информация.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

Комментарии

 

Файловые системы FAT и NTFS поддерживают время создания файла, время последнего доступа к файлу и время последней записи в файл.

Windows 95: Точность значения времени для файла в файловой системе FAT ‑ 2 секунды. Точность значения времени для файлов в других файловых системах, например, на сетевых дисках, зависит от файловой системы, но также может быть ограничена удаленным устройством.

 

См. также

 

FILETIME, GetFileSize, GetFileType, SetFileTime .

 

Прямоугольники

 

CopyRect

 

 

Функция CopyRect копирует координаты одного прямоугольника в другой.

 

BOOL CopyRect (

 

LPRECT  lprcDst , // указатель на структуру для прямоугольника

// назначения

CONST RECT  *  lprcSrc // указатель на структуру для исходного

// прямоугольника

);

 

Параметры

 

lprcDst ‑ указывает на структуру RECT , которая получает логические координаты исходного прямоугольника.

lprcSrc ‑ указывает на структуру RECT , чьи координаты копируются.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

См. также

 

RECT, SetRect, SetRectEmpty .

 

Диалоговые окна

 

CreateDialog

 

 

Макрос CreateDialog создает немодальное диалоговое окно из ресурса ‑ шаблона диалогового окна. Макрос CreateDialog использует функцию CreateDialogParam .

 

HWND CreateDialog (

 

HINSTANCE  hInstance , // дескриптор экземпляра приложения

LPCTSTR  lpTemplate , // идентифицирует имя шаблона диалогового окна

HWND  hWndParent , // дескриптор окна ‑ владельца

DLGPROC  lpDialogFunc // указатель на оконную процедуру

// диалогового окна

);

 

Параметры

 

hInstance ‑ идентифицирует экземпляр модуля, чей исполняемый файл содержит шаблон диалогового окна.

lpTemplate ‑ идентифицирует шаблон диалогового окна. Этот параметр является либо указателем на завершающуюся нулем строку, определяющей имя шаблона диалогового окна, либо целым значением, которое определяет идентификатор ресурса шаблона диалогового окна. Если этот параметр является идентификатором ресурса, его старшее слово должно быть равно нулю, а младшее слово должно содержать идентификатор. Вы можете использовать макрос MAKEINTRESOURCE для создания этого значения.

hWndParent ‑ идентифицирует окно, владеющее диалоговым окном.

lpDialogFunc ‑ указатель на оконную процедуру диалогового окна. Для дополнительной информации об этой процедуре смотрите DialogProc .

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор диалогового окна.

В случае неудачи возвращается NULL .

 

Комментарии

 

Функция CreateDialog использует функцию CreateWindowEx для создания диалогового окна. Затем CreateDialog отправляет сообщение WM _ INITDIALOG (а также сообщение WM _ SETFONT, если шаблон задает стиль DS _ SETFONT ) оконной процедуре диалогового окна. Функция отображает диалоговое окно, в случае если шаблон задает стиль WS _ VISIBLE. В заключение, CreateDialog возвращает дескриптор диалогового окна.

После того, как функция CreateDialog вернет управление, приложение отображает диалоговое окно (если оно еще не отображено), используя функцию ShowWindow . Приложение разрушает диалоговое окно, используя функцию DestroyWindow .

Windows 95: Система поддерживает максимум 16384 дескрипторов окон.

 

См. также

 

CreateDialogIndirect, CreateDialogIndirectParam, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogBox, DialogProc, ShowWindow , WM_INITDIALOG, WM_SETFONT.

 

 

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 . Массив данных, находящийся после структуры DLGITEMTEMPLATE , также должен быть выровнен по DWORD . Все остальные массивы переменной длины в шаблоне должны быть выровнены по WORD .

Все строки символов в шаблоне диалогового окна, такие как заголовки для диалогового окна и кнопок, должны быть строками UnicodE. Для написания кода, который работает как в Windows NT, так и в Windows 95, используйте функцию MultiByteToWideChar для создания строк UnicodE.

 

Windows 95: Система поддерживает максимум 16384 дескрипторов окон.

 

См. также

 

CreateDialog, CreateDialogIndirectParam, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow , WM_INITDIALOG, WM_SETFONT.

 

 

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 . Массив данных, находящийся после структуры 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

 

 

Функция 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 ‑ определяет максимальный размер сообщения в байтах, которое может быть записано в мэйлслот. Для указания того, что сообщение может быть любого размера, установите значение этого параметра в нуль.

lReadTimeout ‑ определяет количество времени, в миллисекундах, которое операция чтения может ждать сообщения, записанного в мэйлслот, до наступления тайм‑аута. Следующие величины имеют специальные значения:

0 ‑ функция возвращает управление немедленно, если в мэйлслоте отсутствует сообщение. (Система не трактует немедленное возвращение как ошибку.)

MAILSLOT_WAIT_FOREVER ‑ ждет до тех пор, пока не придет сообщение.

Величина тайм‑аута применяется ко всем последующим операциям чтения и всем унаследованным дескрипторам мэйлслота.

lpSecurityAttributes ‑ указывает на структуру типа SECURITY _ ATTRIBUTES , которая определяет, может ли возвращаемый дескриптор мэйлслота наследоваться дочерними процессами. Если значение lpSecurityAttributes равно NULL, дескриптор не может быть унаследован.

Windows NT : Член lpSecurityDescriptor структуры определяет дескриптор безопасности для нового мэйлслота. Если значение lpSecurityDescriptor равно NULL, мэйлслот получает дескриптор безопасности по умолчанию.

Windows 95: Член lpSecurityDescriptor структуры игнорируется.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор мэйлслота.

В случае неудачи возвращается INVALID_HANDLE_VALUE. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

Комментарии

 

Мэйлслот существует до тех пор, пока:

Последний (возможно, унаследованный или дублированный) дескриптор не закрыт функцией CloseHandle .

Процесс, владеющий последним (возможно, унаследованным или дублированным) дескриптором, существует.

И Windows NT, и Windows 95 используют второй метод для разрушения мэйлслотов.

 

Для записи сообщения в мэйлслот процесс использует функцию CreateFile , указав имя мэйлслота в одном из следующих форматов:

 

 

 Формат   Использование  
\\.\mailslot\name   Получает клиентский дескриптор локального мэйлслота.  
\\computername\mailslot\name   Получает клиентский дескриптор удаленного мэйлслота.  
\\domainname\mailslot\name   Получает клиентский дескриптор всех мэйлслотов с указанным именем в указанном домене.  
\\*\mailslot\name   Получает клиентский дескриптор всех мэйлслотов с указанным именем в первичном домене системы.  

 

Если CreateFile определяет домен или использует звездочку для указания первичного домена системы, приложение не может записать в мэйлслот более 400 символов за раз. Если приложение попытается сделать это, вызов WriteFile завершится неудачей и GetLastError вернет ERROR_BAD_NETPATH .

Приложение должно указать флаг FILE_SHARE_READ при использовании CreateFile для получения клиентского дескриптора мэйлслота.

 

См. также

 

CloseHandle, CreateFile, GetMailslotInfo, SECURITY_ATTRIBUTES, SetMailslotInfo, WriteFile .

 

 

GetMailslotInfo

 

 

Функция GetMailslotInfo извлекает информацию об указанном мэйлслоте.

 

BOOL GetMailslotInfo (

 

HANDLE  hMailslot , // дескриптор мэйлслота

LPDWORD  lpMaxMessageSize , // адрес максимального размера сообщения

LPDWORD  lpNextSize , // адрес размера следующего сообщения

LPDWORD  lpMessageCount , // адрес количества сообщений

LPDWORD  lpReadTimeout // адрес тайм ‑ аута чтения

);

 

Параметры

 

hMailslot ‑ идентифицирует мэйлслот. Этот дескриптор должна создать функция CreateMailslot .

lpMaxMessageSize ‑ когда функция возвращает управление, указывает на буфер, определяющий максимальный размер письма в байтах, допустимый для этого мэйлслота. Эта величина должна быть больше или равна значению параметра cbMaxMsg функции CreateMailslot , создавшей мэйлслот. Значение параметра может быть равно нулю.

lpNextSize ‑ когда функция возвращает управление, указывает на буфер, определяющий размер следующего письма в байтах. Следующая величина имеет специальное значение:

MAILSLOT_NO_MESSAGE ‑ следующее сообщение отсутствует.

Значение параметра может быть равно нулю.

lpMessageCount ‑ когда функция возвращает управление, указывает на буфер, определяющий количество сообщений, ждущих прочтения. Значение параметра может быть равно нулю.

lReadTimeout ‑ указывает на буфер, определяющий количество времени, в миллисекундах, которое операция чтения может ждать сообщения, записанного в мэйлслот, до наступления тайм‑аута. Параметр заполняется, когда функция возвращает управление. Значение параметра может быть равно нулю.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

См. также

 

CreateMailslot, SetMailslotInfo .

 

 

SetMailslotInfo

 

 

Функция SetMailslotInfo устанавливает величину тайм‑аута, используемую указанным мэйлслотом для операции чтения.

 

BOOL SetMailslotInfo (

 

HANDLE  hMailslot , // дескриптор мэйлслота

DWORD  lReadTimeout // тайм ‑ аут чтения

);

 

Параметры

 

hMailslot ‑ идентифицирует мэйлслот. Этот дескриптор должна создать функция CreateMailslot .

lReadTimeout ‑ определяет количество времени, в миллисекундах, которое операция чтения может ждать сообщения, записанного в мэйлслот, до наступления тайм‑аута. Следующие величины имеют специальные значения:

0 ‑ функция возвращает управление немедленно, если в мэйлслоте отсутствует сообщение. (Система не трактует немедленное возвращение как ошибку.)

MAILSLOT_WAIT_FOREVER ‑ ждет до тех пор, пока не придет сообщение.

Величина тайм‑аута применяется ко всем последующим операциям чтения и всем унаследованным дескрипторам мэйлслота.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

Комментарии

 

Начальное значение тайм‑аута, используемое мэйлслотом для операции чтения, обычно устанавливается в функции CreateMailslot при создании мэйлслота.

 

См. также

 

CreateMailslot, GetMailslotInfo .

 

Справка

 

SetMenuContextHelpId

 

 

Функция SetMenuContextHelpId связывает идентификатор контекстной справки с меню. Все пункты меню разделяют этот идентификатор. Нет возможности назначить идентификатор контекстной справки индивидуальному пункту меню.

 

BOOL SetMenuContextHelpId (

 

HMENU  hmenu ,

DWORD  dwContextHelpId

);

 

Параметры

 

hmenu ‑ дескриптор меню, с которым связывается идентификатор контекстной справки.

dwContextHelpId ‑ идентификатор контекстной справки.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль.

 

См. также

 

GetMenuContextHelpId .

 

Таймеры

 

KillTimer

 

 

Функция KillTimer разрушает указанный таймер.

 

BOOL KillTimer (

 

HWND  hWnd , // дескриптор окна, установившего таймер

UINT  uIDEvent // идентификатор таймера

);

 

Параметры

 

hWnd ‑ идентифицирует окно, связанное с указанным таймером. Значение должно совпадать со значением параметра hWnd , переданным функции SetTimer , создавшей таймер.

uIDEvent ‑ указывает таймер, который должен быть разрушен. Если дескриптор окна, переданный в функцию SetTimer , не равен NULL, то значение uIDEvent при вызове KillTimer должно совпадать со значением uIDEvent , переданного в SetTimer . Если приложение вызывало SetTimer с hWnd , установленным в NULL, то значение этого параметра должно быть идентификатором таймера, возвращенным SetTimer .

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

Комментарии

 

Функция KillTimer не удаляет сообщения WM_TIMER, уже помещенные в очередь сообщений.

 

См. также

 

SetTimer , WM_TIMER.

 

 

QueryPerformanceCounter

 

 

Функция QueryPerformanceCounter извлекает текущее значение счетчика производительности, если таковой существует.

 

BOOL QueryPerformanceCounter (

 

LARGE_INTEGER  *lpPerformanceCount // адрес текущего значения счетчика

);

 

Параметры

 

lpPerformanceCount ‑ указывает на переменную, которую функция устанавливает в текущее значение счетчика. Если установленное аппаратное обеспечение не поддерживает счетчик производительности, этот параметр может быть установлен в нуль.

 

Возвращаемые значения

 

В случае, если установленное аппаратное обеспечение поддерживает счетчик производительности, возвращается ненулевое значение.

Если установленное аппаратное обеспечение не поддерживает счетчик производительности, возвращается нуль.

 

См. также

 

QueryPerformanceFrequency .

 

 

QueryPerformanceFrequency

 

 

Функция QueryPerformanceFrequency извлекает частоту счетчика производительности, если таковой существует.

 

BOOL QueryPerformanceFrequency (

 

LARGE_INTEGER  *lpFrequency // адрес текущей частоты

);

 

Параметры

 

lpFrequency ‑ указывает на переменную, значение которой, в отсчетах в секунду, функция устанавливает в текущую частоту счетчика производительности. Если установленное аппаратное обеспечение не поддерживает счетчик производительности, значение этого параметра может быть равно нулю.

 

Возвращаемые значения

 

В случае, если установленное аппаратное обеспечение поддерживает счетчик производительности, возвращается ненулевое значение.

В случае, если установленное аппаратное обеспечение не поддерживает счетчик производительности, возвращается нуль.

 

См. также

 

QueryPerformanceCounter .

 

 

SetTimer

 

 

Функция SetTimer создает таймер с указанным интервалом срабатывания.

 

UINT SetTimer (

 

HWND  hWnd , // дескриптор окна для сообщений таймера

UINT  nIDEvent , // идентификатор таймера

UINT  uElapse , // интервал срабатывания таймера

TIMERPROC  lpTimerFunc // адрес процедуры таймера

);

 

Параметры

 

hWnd ‑ идентифицирует окно, связанное с таймером. Окном должен владеть вызывающий поток. Если значение этого параметра равно NULL, с таймером не связывается никакого окна и параметр nIDEvent игнорируется.

nIDEvent ‑ определяет ненулевой идентификатор таймера. Если значение параметра hWnd равно NULL, этот параметр игнорируется.

uElapse ‑ определяет интервал срабатывания в миллисекундах.

lpTimerFunc ‑ указывает на функцию, уведомляемую об истечении заданного интервала. Для дополнительной информации смотрите описание функции TimerProc .

Если значение lpTimerFunc равно NULL, система отправляет сообщение WM_TIMER в очередь собщений приложения. Значение члена hwnd структуры сообщения типа MSG содержит значение параметра hWnd .

 

Возвращаемые значения

 

В случае успеха возвращается целочисленный идентификатор нового таймера. Приложение может передавать этот идентификатор в функцию KillTimer для разрушения таймера.

Если не удалось создать новый таймер, возвращается нуль.

 

Комментарии

 

Приложение может обрабатывать сообщение WM_TIMER в оконной процедуре приложения, с соответствующим включением в ее исходный код оператора case, либо указывая при создании таймера функцию обратного вызова TimerProc . Когда вы указываете функцию обратного вызова, функция DispatchMessage просто вызывает ее вместо оконной процедуры.

Значение параметра wParam сообщения WM_TIMER содержит значение параметра nIDEvent .

 

См. также

 

DispatchMessage, KillTimer, MSG, TimerProc , WM_TIMER.

 

 

TimerProc

 

 

Функция TimerProc является определяемой приложением функцией обратного вызова, которая обрабатывает сообщения WM_TIMER.

 

VOID CALLBACK TimerProc (

 

HWND  hwnd , // дескриптор окна для сообщений таймера

UINT  uMsg , // сообщение WM_TIMER

UINT  idEvent , // идентификатор таймера

DWORD  dwTime // текущее системное время

);

 

Параметры

 

hwnd ‑ идентифицирует окно, связанное с таймером.

uMsg ‑ определяет сообщение WM_TIMER.

idEvent ‑ определяет идентификатор таймера.

dwTime ‑ задает число миллисекунд, истекших с момента старта Windows. Это значение возвращается функцией GetTickCount .

 

Возвращаемые значения

 

Функция не возвращает значения.

 

Комментарии

 

TimerProc является "заполнителем" для имени определяемой приложением функции.

 

См. также

 

GetTickCount, KillTimer, SetTimer , WM_TIMER.

 

Сообщения

 

WM_TIMER

 

 

Сообщение WM_TIMER отправляется в очередь сообщений установившего таймер потока или соответствующей функции обратного вызова TimerProc по истечении интервала, заданного при установке таймера функцией SetTimer .

 

WM_TIMER

wTimerID = wParam ; // идентификатор таймера

tmprc = ( TIMERPROC *) lParam ; // адрес функции обратного вызова таймера

 

Параметры

 

wTimerID ‑ значение wParam . Определяет идентификатор таймера.

tmprc ‑ значение lParam . Указывает на определяемую приложением функцию обратного вызова, адрес которой был передан при установке таймера функцией SetTimer . Если значение параметра tmprc не равно NULL, Windows передает сообщение WM_TIMER указанной функции обратного вызова вместо помещения сообщения в очередь сообщений потока.

 

Возвращаемые значения

 

Приложение должно возвращать нуль, если оно обрабатывает это сообщение.

 

Комментарии

 

Функция DispatchMessage передает сообщение в очередь сообщений потока, когда в ней нет других сообщений.

 

См. также

 

DispatchMessage, SetTimer, TimerProc .

 

Ввод с клавиатуры

 

SetKeyboardState

 

 

Функция SetKeyboardState копирует массив из 256 байт состояний клавиш в таблицу состояния ввода с клавиатуры вызывающего потока. Это та же самая таблица, к которой имеют доступ функции GetKeyboardState и GetKeyState . Изменения, сделанные в этой таблице, не влияют на ввод с клавиатуры для других потоков.

 

BOOL SetKeyboardState (

 

LPBYTE  lpKeyState // адрес массива с кодами виртуальных клавиш

);

 

Параметры

 

lpKeyState ‑ указывает на 256‑байтный массив, который содержит состояния клавиш клавиатуры.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

 

Комментарии

 

Поскольку функция SetKeyboardState изменяет состояние ввода вызывающего потока, но не глобальное состояние ввода системы, приложение не может использовать SetKeyboardState для установки индикаторов NUM LOCK, CAPS LOCK или r SCROLL LOCK на клавиатуре.

 

См. также

 

GetAsyncKeyState, GetKeyboardState, GetKeyState, MapVirtualKey .

 

Области

 

CombineRgn

 

 

Функция CombineRgn объединяет две области и сохраняет результат в третьей. Две области объединяются согласно указанному режиму объединения.

 

int CombineRgn (

 

HRGN  hrgnDest , // дескриптор результирующей области

HRGN  hrgnSrc  1 , // дескриптор исходной области

HRGN  hrgnSrc  2 , // дескриптор исходной области

int  fnCombineMode // режим объединения областей

);

 

Параметры

 

hrgnDest ‑ идентифицирует новую область с размерами, определяемыми двумя исходными областями (область должна существовать до вызова функции CombineRgn ).

hrgnSrc  1 ‑ идентифицирует первую из двух исходных областей.

hrgnSrc  2 ‑ идентифицирует вторую из двух исходных областей.

fnCombineMode ‑ определяет режим объединения двух областей. Может принимать одно из следующих значений:

 

 

 Значение   Пояснение  
RGN_AND   Создается пересечение двух областей.  
RGN_COPY   Создается копия области, идентифицируемой значением параметра hrgnSrc  1 .  
RGN_DIFF   Объединяются те части области, идентифицируемой значением параметра hrgnSrc  1 , которые не являются частями области, идентифицируемой значением параметра hrgnSrc  2 .  
RGN_OR   Создается объединение двух областей.  
RGN_XOR   Создается объединение двух областей, за исключением любых пересекающихся участков.  

 

Возвращаемые значения

 

Возвращаемое значение показывает сложность результирующей области и может принимать одно из следующих значений:

 

 

 Значение   Пояснение  
COMPLEXREGION   Область состоит более чем из одного прямоугольника  
ERROR   Произошла ошибка  
NULLREGION   Пустая область  
SIMPLEREGION   Область является одиночным прямоугольником  

 

Комментарии

 

Области могут совпадать друг с другом. Например, значение параметра hrgnSrc  1 может быть равно значению параметра hrgnDest .

 

См. также

 

CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn .

 

 

CreateEllipticRgn

 

 

Функция CreateEllipticRgn создает эллиптическую область.

 

HRGN CreateEllipticRgn (

 

int  nLeftRect , // x ‑координата верхнего левого угла

// ограничивающего прямоугольника

int  nTopRect , // y ‑ координата верхнего левого угла

// ограничивающего прямоугольника

int  nRightRect , // x ‑координата нижнего правого угла

// ограничивающего прямоугольника

int  nBottomRect // y ‑ координата нижнего правого угла

// ограничивающего прямоугольника

);

 

Параметры

 

nLeftRect ‑ определяет x ‑координату верхнего левого угла прямоугольника, ограничивающего эллипс.

nTopRect ‑ определяет y ‑координату верхнего левого угла прямоугольника, ограничивающего эллипс.

nRightRect ‑ определяет x ‑координату нижнего правого угла прямоугольника, ограничивающего эллипс.

nBottomRect ‑ определяет y ‑координату нижнего правого угла прямоугольника, ограничивающего эллипс.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор области.

В случае неудачи возвращается NULL .

 

Комментарии

 

Ограничивающий прямоугольник определяет размер, форму и ориентацию области. Длинные стороны прямоугольника определяют длину большой оси эллипса; короткие стороны определяют длину малой оси эллипса; центр прямоугольника определяет пересечение большой и малой осей.

Координаты ограничивающего прямоугольника задаются в логических единицах.

 

См. также

 

CreateEllipticRgnIndirect, DeleteObject, SelectObject .

 

 

CreateEllipticRgnIndirect

 

 

Функция CreateEllipticRgnIndirect создает эллиптическую область.

 

HRGN CreateEllipticRgnIndirect (

 

CONST RECT * lprc // указатель на структуру, определяющую

// ограничивающий прямоугольник

);

 

Параметры

 

lprc ‑ указатель на структуру типа RECT , которая содержит координаты верхнего левого и нижнего правого углов ограничивающего эллипс прямоугольника.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор области.

В случае неудачи возвращается NULL .

 

Комментарии

 

Ограничивающий прямоугольник определяет размер, форму и ориентацию области. Длинные стороны прямоугольника определяют длину большой оси эллипса; короткие стороны определяют длину малой оси эллипса; центр прямоугольника определяет пересечение большой и малой осей.

Координаты ограничивающего прямоугольника задаются в логических единицах.

 

См . также

 

CreateEllipticRgn, DeleteObject, RECT, SelectObject .

 

 

CreatePolygonRgn

 

 

Функция CreatePolygonRgn создает многоугольную область.

 

HRGN CreatePolygonRgn (

 

CONST POINT * lppt , // указатель на массив точек

int  cPoints , // число точек в массиве

int  fnPolyFillMode // режим заполнения многоугольника

);

 

Параметры

 

lppt ‑ указатель на массив структур типа POINT , которые определяют вершины многоугольника. Многоугольник полагается замкнутым. Каждая вершина может быть задана лишь один раз.

cPoints ‑ определяет количество точек в массиве.

fnPolyFillMode ‑ определяет режим заполнения, используемый для определения того, какие пиксели входят в область. Может принимать одно из следующих значений:

 

 

 Значение   Пояснение  
ALTERNATE   Попеременный режим. Закрашиваются только те фрагменты внутренней области многоугольника, которые получаются путем соединения линий с нечетными номерами (1, 3, 5 и т. д.). Другие фрагменты внутренней области не закрашиваются.  
WINDING   Сквозной. Windows закрашивает все внутренние области.  

 

Для дополнительной информации об этих режимах смотрите описание функции SetPolyFillMode .

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор области.

В случае неудачи возвращается NULL .

 

См. также

 

CreatePolyPolygonRgn, DeleteObject, POINT, SelectObject, SetPolyFillMode .

 

 

CreatePolyPolygonRgn

 

 

Функция CreatePolyPolygonRgn создает область, состоящую из нескольких прямоугольников. Прямоугольники могут перекрывать друг друга.

 

HRGN CreatePolyPolygonRgn (

 

CONST POINT * lppt , // указатель на массив точек

CONST INT * lpPolyCounts , // указатель на массив,

// содержащий количества вершин

int  nCount , // количество целых в массиве количества вершин

int  fnPolyFillMode // режим заполнения многоугольника

);

 

Параметры

 

lppt ‑ указатель на массив структур типа POINT , которые определяют вершины многоугольников. Многоугольники задаются последовательно. Каждый многоугольник полагается замкнутым, и каждая вершина может быть задана лишь один раз.

lpPolyCounts ‑ указывает на массив целых, каждое из которых задает количество точек в одном из многоугольников в массиве, на который указывает значение параметра lppt .

nCount ‑ определяет общее количество целых значений в массиве, на который указывает значение параметра lpPolyCounts .

fnPolyFillMode ‑ определяет режим заполнения, используемый для определения того, какие пиксели входят в область. Может принимать одно из следующих значений:

 

 

 Значение   Пояснение  
ALTERNATE   Попеременный режим. Закрашиваются только те фрагменты внутренней области многоугольника, которые получаются путем соединения линий с нечетными номерами (1, 3, 5 и т. д.). Другие фрагменты внутренней области не закрашиваются.  
WINDING   Сквозной. Windows закрашивает все внутренние области.  

 

Для дополнительной информации об этих режимах смотрите описание функции SetPolyFillMode .

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор области.

В случае неудачи возвращается NULL .

 

См. также

 

CreatePolygonRgn, DeleteObject, POINT, SelectObject, SetPolyFillMode .

 

 

CreateRectRgn

 

 

Функция CreateRectRgn создает прямоугольную область.

 

HRGN CreateRectRgn (

 

int  nLeftRect , // x‑координата верхнего левого угла области

int  nTopRect , // y‑координата верхнего левого угла области

int  nRightRect , // x‑координата правого нижнего угла области

int  nBottomRect // y‑координата правого нижнего угла области

);

 

Параметры

 

nLeftRect ‑ определяет x‑координату верхнего левого угла области.

nTopRect ‑ определяет y ‑координату верхнего левого угла области.

nRightRect ‑ определяет x‑координату правого нижнего угла области.

nBottomRect ‑ определяет y‑ координату правого нижнего угла области.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор области.

В случае неудачи возвращается NULL.

 

Комментарии

 

В область не входят ее правая и нижняя границы.

 

См. также

 

CreateRectRgnIndirect, CreateRoundRectRgn, DeleteObject, SelectObject .

 

 

CreateRectRgnIndirect

 

 

Функция CreateRectRgnIndirect создает прямоугольную область.

 

HRGN CreateRectRgnIndirect (

 

CONST RECT * lprc // указатель на прямоугольник

);

 

Параметры

 

lprc ‑ указывает на структуру типа RECT , которая содержит координаты верхнего левого и нижнего правого углов прямоугольника, определяющего область.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор области.

В случае неудачи возвращается NULL .

 

Комментарии

 

В область не войдут правая и нижняя стороны прямоугольника.

 

См. также

 

CreateRectRgn, CreateRoundRectRgn, DeleteObject, RECT, SelectObject .

 

 

CreateRoundRectRgn

 

 

Функция CreateRoundRectRgn создает прямоугольную область с закругленными углами.

 

HRGN CreateRoundRectRgn (

 

int  nLeftRect , // x ‑координата верхнего левого угла области

int  nTopRect , // y ‑координата верхнего левого угла области

int  nRightRect , // x ‑координата нижнего правого угла области

int  nBottomRect , // y ‑координата нижнего правого угла области

int  nWidthEllipse , // ширина эллипса для закругленных углов

int  nHeightEllipse // высота эллипса для закругленных углов

);

 

Параметры

 

nLeftRect ‑ определяет x ‑координату верхнего левого угла области.

nTopRect ‑ определяет y ‑ координату верхнего левого угла области.

nRightRect ‑ определяет x ‑координату нижнего правого угла области.

nBottomRect ‑ определяет y ‑координату нижнего правого угла области.

nWidthEllipse ‑ определяет ширину эллипса, используемого для создания закругленных углов.

nHeightEllipse ‑ определяет высоту эллипса, используемого для создания закругленных углов.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор области.

В случае неудачи возвращается NULL .

 

См. также

 

CreateRectRgn, CreateRectRgnIndirect, DeleteObject, SelectObject .

 

 

EqualRgn

 

 

Функция EqualRgn проверяет две указанные области на идентичность. Функция считает области идентичными, если они имеют одинаковые размер и форму.

 

BOOL EqualRgn (

 

HRGN  hSrcRgn  1 , // дескриптор первой области

HRGN  hSrcRgn  2 // дескриптор второй области

);

 

Параметры

 

hSrcRgn  1 ‑ идентифицирует первую область.

hSrcRgn  2 ‑ идентифицирует вторую область.

 

Возвращаемые значения

 

Если две области равны, возвращается ненулевое значение.

Если две области не равны, возвращается нуль. Возврат ERROR означает, что, по крайней мере, один из дескрипторов областей был недействительным.

 

См. также

 

CreateRectRgn, CreateRectRgnIndirect .

 

 

ExtCreateRegion

 

 

Функция ExtCreateRegion   создает область из указанной области и данных трансформации.

 

HRGN ExtCreateRegion (

 

CONST XFORM * lpXform , // указатель на данные трансформации

DWORD  nCount , // размер структуры, содержащей данные области

CONST RGNDATA * lpRgnData // указатель на данные области

);

 

Параметры

 

lpXform ‑ указатель на структуру типа XFORM , которая определяет трансформацию, выполняемую над областью. Если значение этого параметра равно NULL, используется единичная трансформация.

nCount ‑ определяет число байт, адресуемых значением параметра lpRgnData .

lpRgnData ‑ указывает на структуру типа RGNDATA , которая содержит данные области.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор области.

В случае неудачи возвращается NULL .

 

Комментарии

 

Приложение может извлечь данные для области, вызвав функцию GetRegionData .

Windows 95: Области более не ограничены кучей в 64 КБайт.

Windows 95: Мировые преобразования, который включают в себя сдвиг или вращение, не поддерживаются. Вызов ExtCreateRegion завершится неудачей, если матрица преобразования задает собой что‑либо отличное от масштабирования или сдвига области.

 

См. также

 

GetRegionData, RGNDATA, XFORM .

 

 

FillRgn

 

 

Функция FillRgn заполняет область, используя определенную кисть.

 

BOOL FillRgn (

 

HDC  hdc , // дескриптор контекста устройства

HRGN  hrgn , // дескриптор заполняемой области

HBRUSH  hbr // дескриптор кисти, используемой для заполнения области

);

 

Параметры

 

hdc ‑ идентифицирует контекст устройства.

hrgn ‑ идентифицирует заполняемую область. Предполагается, что координаты области задаются в логических единицах.

hbr ‑ идентифицирует кисть, используемую для заполнения области.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль.

 

См. также

 

CreateBrushIndirect, CreateDIBPatternBrush, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush, PaintRgn .

 

 

FrameRgn

 

 

Функция FrameRgn рисует рамку вокруг указанной области, используя указанную кисть.

 

BOOL FrameRgn (

 

HDC  hdc , // дескриптор контекста устройства

HRGN  hrgn , // дескриптор области, вокруг которой рисуется рамка

HBRUSH  hbr , // дескриптор кисти, используемой для рисования рамки

int  nWidth , // ширина рамки

int  nHeight // высота рамки

);

 

Параметры

 

hdc ‑ идентифицирует контекст устройства.

hrgn ‑ идентифицирует область, заключаемую в рамку. Предполагается, что координаты области задаются в логических единицах.

hbr ‑ идентифицирует кисть, используемую для рисования рамки.

nWidth ‑ определяет ширину вертикальных штрихов кисти, в логических единицах.

nHeight ‑ определяет высоту горизонтальных штрихов кисти, в логических единицах.

 

Возвращаемые значения

 

В случае успеха возвращается ненулевое значение.

В случае неудачи возвращается нуль.

 

См. также

 

FillRgn, PaintRgn .

 

 

GetPolyFillMode

 

 

Функция GetPolyFillMode извлекает текущий режим заполнения прямоугольника.

 

int GetPolyFillMode (

 

HDC  hdc // дескриптор контекста устройства

);

 

Параметры

 

hdc ‑ идентифицирует контекст устройства.

 

Возвращаемые значения

 

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

 

 

 Значение   Пояснение  
ALTERNATE   Попеременный режим. Закрашиваются только те фрагменты внутренней области многоугольника, которые получаются путем соединения линий с нечетными номерами (1, 3, 5 и т. д.). Другие фрагменты внутренней области не закрашиваются.  
WINDING   Сквозной. Windows закрашивает все внутренние области.  

 

В случае неудачи возвращается нуль.

 

См. также

 

SetPolyFillMode .

 

 

GetRegionData

 

 

Функция GetRegionData заполняет указанный буфер данными, описывающими область. Эти данные включают в себя размеры прямоугольника, покрывающего область.

 

DWORD GetRegionData (

 

HRGN  hRgn , // дескриптор области

DWORD  dwCount , // размер буфера, содержащего данные области

LPRGNDATA  lpRgnData // адрес буфера

);

 

Параметры

 

hRgn ‑ идентифицирует область.

dwCount ‑ определяет размер буфера, на который указывает значение параметра lpRgnData , в байтах.

lpRgnData ‑ указывает на структуру типа RGNDATA , которая получает информацию. Если значение этого параметра равно NULL, то возвращаемое значение содержит число байт, необходимых для данных области.

 

Возвращаемые значения

 

Если вызов функции завершается успехом и значение dwCount определяет соответствующее количество байт, возвращается 1. Если значение dwCount слишком мало или значение lpRgnData равно NULL, возвращается требуемое количество байт.

В случае неудачи возвращается нуль.

 

Комментарии

 

Функция GetRegionData используется в паре с функцией ExtCreateRegion .

 

См. также

 

ExtCreateRegion, RGNDATA .

 

 

GetRgnBox

 

 

Функция GetRgnBox извлекает ограничивающий прямоугольник указанной области.

 

int GetRgnBox (

 

HRGN  hrgn , // дескриптор области

LPRECT  lprc // адрес структуры, которая получает

// ограничивающий прямоугольник

);

 

Параметры

 

hrgn ‑ идентифицирует область.

lprc ‑ указывает на структуру типа RECT , которая получает ограничивающий прямоугольник.

 

Возвращаемые значения

 

Возвращаемое значение показывает сложность результирующей области и может принимать одно из следующих значений:

 

 

 Значение   Пояснение  
COMPLEXREGION   Область состоит более чем из одного прямоугольника.  
ERROR   Произошла ошибка.  
NULLREGION   Пустая область.  
SIMPLEREGION   Область является одиночным прямоугольником.  

 

Если значение параметра hrgn не идентифицирует действительную область, возвращается нуль.

 

См. также

 

RECT .

 

 

OffsetRgn

 

 

Функция OffsetRgn перемещает область на заданные смещения.

 

int OffsetRgn (

 

HRGN  hrgn , // дескриптор области

int  nXOffset , // смещение вдоль оси x

int  nYOffset // смещение вдоль оси y

);

 

Параметры

 

hrgn ‑ идентифицирует перемещаемую область.

nXOffset ‑ задает количество логических единиц, на которое область смещается влево или вправо.

nYOffset ‑ задает количество логических единиц, на которое область смещается вверх или вниз.

 

Возвращаемые значения

 

Возвращаемое значение определяет сложность новой области. Может принимать одно из следующих значений:

 

 

 Значение   Пояснение  
COMPLEXREGION   Область состоит более чем из одного прямоугольника  
ERROR   Произошла ошибка, область не изменена.  
NULLREGION   Пустая область  
SIMPLEREGION   Область является одиночным прямоугольником  

 

SetPolyFillMode

 

 

Функция SetPolyFillMode устанавливает режим заполнения многоугольников для соответствующих функций.

 

int SetPolyFillMode (

 

HDC  hdc , // дескриптор контекста устройства

int  iPolyFillMode // режим заполнения многоугольников

);

 

Параметры

 

hdc ‑ идентифицирует контекст устройства.

iPolyFillMode ‑ определяет новый режим заполнения. Может быть одним из следующих значений:

 

 

 Значение   Пояснение  
ALTERNATE   Попеременный режим. Закрашиваются только те фрагменты внутренней области многоугольника, которые получаются путем соединения линий с нечетными номерами (1, 3, 5 и т. д.). Другие фрагменты внутренней области не закрашиваются.  
WINDING   Сквозной. Windows закрашивает все внутренние области.  

 

Возвращаемые значения

 

Возвращается предыдущий режим заполнения многоугольников.

В случае ошибки возвращается нуль.

 

Комментарии

 

Вообще, режимы отличаются только в случаях, где должен быть заполнен сложный перекрывающийся многоугольник (например, пятисторонний многоугольник, который образует пяти‑лучевую звезду с пятиугольником в центре). В таких случаях, режим ALTERNATE заполняет каждую закрытую область внутри прямоугольника (то есть, лучи звезды), а режим WINDING заполняет все области (то есть, лучи звезды и прямоугольник).

 

См. также

 

GetPolyFillMode .

 

Црифт и текст

 

CreateFontIndirect

 

 

Функция CreateFontIndirect создает логический шрифт, характеристики которого определены в указанной структуре. Впоследствии шрифт может быть выбран в качестве текущего шрифта для любого контекста устройства.

 

HFONT CreateFontIndirect (

 

CONST LOGFONT * lplf // указатель на структуру логического шрифта

);

 

Параметры

 

lplf ‑ указывает на структуру типа LOGFONT , которая определяет характеристики логического шрифта.

 

Возвращаемые значения

 

В случае успеха возвращается дескриптор логического шрифта.

В случае неудачи возвращается нуль.

 

Комментарии

 

Функция CreateFontIndirect создает логический шрифт с характеристиками, указанными в структуре типа LOGFONT . Когда шрифт выбирают функцией SelectObject , механизм отображения шрифтов GDI пытается подобрать логическому шрифту существующий физический шрифт. Если попытка подобрать точное соответствие закончилась неудачей, то предоставляется альтернативный шрифт, чьи характеристики удовлетворяют наибольшему числу запрашиваемых характеристик.

Когда логический шрифт вам больше не нужен, вызовите для его удаления функцию DeleteObject .

 

См. также

 

DeleteObject, LOGFONT, SelectObject .

 


Дата добавления: 2021-01-21; просмотров: 91; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!