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

Сорока Тарас

 

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

 

Цвета

 

От изготовителя fb2.

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

Давайте, протестируем вашу читалку.

1 строка, 1 столбец 1 строка, 2 столбец 1 строка, 3 столбец
2 строка 1 столбец 2 строка 2 столбец спорю, что не догадаетесь, какая это строка

Если, вместо симпатичной таблицы вы увидели такое:

1 строка, 1 столбец

1 строка, 2 столбец

1 строка, 3 столбец

2 строка 1 столбец

2 строка 2 столбец

...

Значит ваша читалка таблиц не видит, что очень жаль, т.к. в книге их 49.

Что делать?... Ну, я поступаю так. В Mozilla Firefox поставил плагин для чтения fb2, и все проблемы решены, конечно, возможны и другие варианты...

Вот и все.

Успехов w_cat.

 

CreatePalette

Функция CreatePalette создает логическую цветовую палитру.

HPALETTE CreatePalette (

CONST LOGPALETTE * lplgpl // указатель на логическую цветовую палитру

);

Параметры

lplgpl - указывает на структуру типа LOGPALETTE , которая содержит информацию о цветах в логической палитре.

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

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

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

Комментарии

Приложение может определить, поддерживает ли устройство операции с палитрами, вызвав GetDeviceCaps и определив константу RASTERCAPS .

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

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

См. также

DeleteObject, GetDeviceCaps, LOGPALETTE, RealizePalette, SelectPalette .

 

GetNearestColor

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

COLORREF GetNearestColor (

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

COLORREF crColor // подбираемый цвет

);

Параметры

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

crColor - определяет цветовое значение, идентифицирующее запрашиваемый цвет.

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

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

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

См. также

GetDeviceCaps, GetNearestPaletteIndex, COLORREF .

 

GetSystemPaletteEntries

Функция GetSystemPaletteEntries извлекает диапазон вхождений в палитру из системной палитры, которая связана с указанным контекстом устройства (device context).

UINT GetSystemPaletteEntries (

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

UINT iStartIndex , // первое извлекаемое вхождение в палитру

UINT nEntries , // количество извлекаемых вхождений в палитру

LPPALETTEENTRY lppe // массив, получающий вхождения в палитру

);

Параметры

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

iStartIndex - определяет первое извлекаемое вхождение в системную палитру.

nEntries - определяет количество извлекаемых из системной палитры вхождений.

lppe - указатель на массив структур типа PALETTEENTRY для получения вхождений в палитру. Число элементов в массиве должно быть не меньше значения, заданного параметром nEntries . Если значение параметра lppe равно NULL, функция возвращает общее количество вхождений в системную палитру.

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

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

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

Windows NT/2000/XP: Для получения дополнительной информации об ошибке вызовите функцию GetLastError.

Комментарии

Приложение может определить, поддерживает ли устройство операции с палитрой, вызвав функцию GetDeviceCaps с параметром RASTERCAPS.

Требования

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

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

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

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

См. также

GetDeviceCaps, GetPaletteEntries, PALETTEENTRY.

 

ResizePalette

Функция ResizePalette увеличивает или уменьшает размер логической палитры, основываясь на указанном значении.

BOOL ResizePalette (

HPALETTE hpal , // дескриптор логической палитры

UINT nEntries // число вхождений в логическую палитру

);

Параметры

hpal - идентифицирует изменяемую логическую палитру.

nEntries - определяет число вхождений в палитру после изменения ее размера.

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

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

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

Комментарии

Приложение может определить, поддерживает ли устройство операции с палитрой, вызвав функцию GetDeviceCaps с параметром RASTERCAPS .

Если приложение вызывает ResizePalette для уменьшения размера палитры, вхождения, оставшиеся в измененной палитре, не изменяются. Если приложение вызывает ResizePalette для увеличения размера палитры, то новым вхождениям в палитру присваивается черный цвет и их флаги устанавливаются в нуль.

См. также

GetDeviceCaps .

 

UpdateColors

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

BOOL UpdateColors (

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

);

Параметры

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

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

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

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

Комментарии

Приложение может определить, поддерживает ли устройство операции с палитрой, вызвав функцию GetDeviceCaps с параметром RASTERCAPS .

Неактивное окно с реализованной логической палитрой может вызвать функцию UpdateColors в качестве альтернативы перерисовке его клиентской области при смене системной палитры.

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

Функция должна вызываться сразу после получения приложением сообщения WM _ PALETTECHANGED .

См. также

GetDeviceCaps, RealizePalette .

 

Атомы

 

Функции

 

AddAtom

Функция AddAtom добавляет строку символов в таблицу локальных атомов и возвращает уникальное значение (атом), идентифицирующее строку.

ATOM AddAtom (

LPCTSTR lpString // указатель на добавляемую строку

);

Параметры

lpString - указатель на добавляемую строку, завершающуюся нулем. Строка может иметь максимальный размер в 255 байт. Строки, отличающиеся только регистром, считаются идентичными.

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

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

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

Комментарии

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

Для преобразования значения WORD в строку, которая может быть добавлена функцией AddAtom в таблицу атомов, может быть использован макрос MAKEINTATOM .

AddAtom возвращает строковый атом, чье значение лежит в диапазоне от 0 xC 000 до 0 xFFFF .

Если значение lpString имеет вид "#1234", AddAtom возвращает целый атом, чье значение являет собой 16-битное представление десятичного числа, указанного в строке (в данном случае 0 x 04 D 2). Если указанное десятичное значение представляет собой 0 x 0000 или значение, лежащее в диапазоне от 0 xC 000 до 0 xFFFF, возвращается нуль, указывающий на ошибку. Если значение lpString лежит в диапазоне от 0 x 0001 до 0 xBFFF, возвращается младшее слово lpString .

См. также

DeleteAtom, FindAtom, GetAtomName, GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom, GlobalGetAtomName, MAKEINTATOM .

 

DeleteAtom

Функция DeleteAtom уменьшает счетчик ссылок локальной строки атома. Если счетчик ссылок атома достигает нулевого значения, DeleteAtom удаляет строку, связанную с атомом, из таблицы локальных атомов.

ATOM DeleteAtom (

ATOM nAtom // удаляемый атом

);

Параметры

nAtom - идентифицирует удаляемые атом и строку символов.

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

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

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

Комментарии

Счетчик ссылок строки атома определяет, сколько раз строка была добавлена или удалена в/из таблицы локальных атомов. Функция DeleteAtom уменьшает счетчик ссылок строки, которая уже содержится в таблице локальных атомов, при каждом вызове, но удаляет строку только по достижению счетчиком нуля.

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

Вызов DeleteAtom не воздействует на целый атом (атом, созданный макросом MAKEINTATOM ). Функция всегда возвращает нуль для целого атома.

См. также

AddAtom, FindAtom, GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom, MAKEINTATOM .

 

FindAtom

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

ATOM FindAtom (

LPCTSTR lpString // указатель на строку поиска

);

Параметры

lpString - указывает на завершающуюся нулем строку символов.

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

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

Комментарии

Не смотря на то, что Windows сохраняет регистр строки в таблице атомов, поиск, выполняемый функцией FindAtom , не чувствителен к регистру.

См. также

AddAtom, DeleteAtom, GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom .

 

GetAtomName

Функция GetAtomName возвращает копию символьной строки, связанной с указанным локальным атомом. Эта функция заменяет функцию GetAtomHandle .

UINT GetAtomName (

ATOM nAtom , // атом, идентифицирующий символьную строку

LPTSTR lpBuffer , // адрес буфера для строки атома

int nSize // размер буфера

);

Параметры

nAtom - определяет локальный атом, который идентифицирует получаемую символьную строку.

lpBuffer - указывает на буфер для символьной строки.

nSize - определяет размер буфера в символах.

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

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

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

Примечания

Строка, возвращаемая для целочисленного атома (созданного макросом MAKEINTATOM ) - завершающаяся нулем строка, в которой первым символом является символ '#', а оставшиеся символы представляют беззнаковое целое, первоначально переданное MAKEINTATOM .

См. также

AddAtom, DeleteAtom, FindAtom, GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom, GlobalGetAtomName, MAKEINTATOM .

 

GlobalAddAtom

Функция GlobalAddAtom добавляет строку символов в таблицу глобальных атомов и возвращает уникальное значение (атом), идентифицирующее строку.

ATOM GlobalAddAtom (

LPCTSTR lpString // указатель на добавляемую строку

);

Параметры

lpString - указатель на добавляемую строку, завершающуюся нулем. Строка может иметь максимальный размер в 255 байт. Строки, отличающиеся только регистром, считаются идентичными.

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

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

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

Комментарии

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

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

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

GlobalAddAtom возвращает строковый атом, чье значение лежит в диапазоне от 0 xC 000 до 0 xFFFF .

Если значение lpString имеет вид "#1234", GlobalAddAtom возвращает целый атом, чье значение являет собой 16-битное представление десятичного числа, указанного в строке (в данном случае 0 x 04 D 2). Если указанное десятичное значение представляет собой 0 x 0000 или значение, лежащее в диапазоне от 0 xC 000 до 0 xFFFF, возвращается нуль, указывающий на ошибку. Если значение lpString лежит в диапазоне от 0 x 0001 до 0 xBFFF, возвращается младшее слово lpString .

Для преобразования значения WORD в строку, которая может быть добавлена функцией GlobalAddAtom в таблицу атомов, может быть использован макрос MAKEINTATOM .

См . также

AddAtom, DeleteAtom, FindAtom, GetAtomName, GlobalDeleteAtom, GlobalFindAtom, GlobalGetAtomName, MAKEINTATOM .

 

GlobalDeleteAtom

Функция GlobalDeleteAtom уменьшает счетчик ссылок глобальной строки атома. Если счетчик ссылок атома достигает нулевого значения, GlobalDeleteAtom удаляет строку, связанную с атомом, из таблицы глобальных атомов.

ATOM GlobalDeleteAtom (

ATOM nAtom // удаляемый атом

);

Параметры

nAtom - идентифицирует удаляемые атом и строку символов.

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

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

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

Комментарии

Счетчик ссылок строки атома определяет, сколько раз строка была добавлена или удалена в/из таблицы глобальных атомов. Функция GlobalDeleteAtom уменьшает счетчик ссылок строки, которая уже содержится в таблице глобальных атомов, при каждом вызове.

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

Вызов GlobalDeleteAtom не воздействует на целый атом (атом, созданный макросом MAKEINTATOM ). Функция всегда возвращает нуль для целого атома.

См. также

AddAtom, DeleteAtom, FindAtom, GlobalAddAtom, GlobalFindAtom, MAKEINTATOM .

 

GlobalFindAtom

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

ATOM GlobalFindAtom (

LPCTSTR lpString // указатель на строку поиска

);

Параметры

lpString - указывает на завершающуюся нулем строку символов.

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

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

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

Комментарии

Несмотря на то, что Windows сохраняет регистр строки в таблице атомов, поиск, выполняемый функцией GlobalFindAtom , не чувствителен к регистру.

См. также

AddAtom, DeleteAtom, FindAtom, GetAtomName, GlobalAddAtom, GlobalDeleteAtom, GlobalGetAtomName .

 

GlobalGetAtomName

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

UINT GlobalGetAtomName (

ATOM nAtom , // идентификатор атома

LPTSTR lpBuffer , // указатель на буфер для строки

int nSize // размер буфера

);

Параметры

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

lpBuffer - указывает на буфер для строки символов.

nSize - указывает размер буфера в символах.

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

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

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

Комментарии

Строка, возвращаемая для целого атома (атома, созданного макросом MAKEINTATOM ), представляет собой завершающуюся нулем строку, в которой первым символом является символ фунта ('#'), а оставшиеся символы - беззнаковое целое, первоначально переданное в макрос MAKEINTATOM .

См. также

AddAtom, DeleteAtom, FindAtom, GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom, MAKEINTATOM .

 

InitAtomTable

Функция InitAtomTable инициализирует таблицу локальных атомов и задает ее размер.

BOOL InitAtomTable (

DWORD nSize // размер таблицы атомов

);

Параметры

nSize - задает размер, в количестве элементов, таблицы атомов. Этот параметр должен представлять собой простое число.

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

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

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

Комментарии

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

Если приложение использует большое число локальных атомов, оно может уменьшить время, необходимое для добавления атома в таблицу локальных атомов или для поиска атома в таблицы, увеличив размер таблицы. Однако, это увеличит количество памяти, необходимое для таблицы.

Размер таблицы глобальных атомов не может быть изменен.

См. также

AddAtom, DeleteAtom, FindAtom, GetAtomName, GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom, GlobalGetAtomName .

 

Макросы

 

MAKEINTATOM

Макрос MAKEINTATOM создает целый атом, который представляет символьную строку десятичных цифр.

Целые атомы, созданные этим макросом, могут быть добавлены в таблицу атомов, используя функции AddAtom или GlobalAddAtom .

LPTSTR MAKEINTATOM (

WORD wInteger // целое для создания атома

);

Параметры

wInteger - определяет числовое значение, из которого создается целый атом.

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

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

Комментарии

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

Вызовы функций DeleteAtom и GlobalDeleteAtom всегда успешны для целых атомов.

Строка, возвращаемая функциями GetAtomName и GlobalGetAtomName для целых атомов, является завершающейся нулем строкой, в которой первый символ - это символ '#', а оставшиеся символы - десятичные цифры, используемые в макросе MAKEINTATOM .

Макрос MAKEINTATOM определен следующим образом:

#define MAKEINTATOM(i) (LPTSTR) ((DWORD) ((WORD) (i)))

См. также

AddAtom, DeleteAtom, GetAtomName, GlobalAddAtom, GlobalDeleteAtom, GlobalGetAtomName .

 

Окна

 

AdjustWindowRect

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

BOOL AdjustWindowRect (

LPRECT lpRect , // указатель на структуру с координатами

// клиентской области

DWORD dwStyle , // стили окна

BOOL bMenu // флаг наличия меню

);

Параметры

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

dwStyle - определяет стили окна, размер которого вычисляется.

bMenu - определяет наличие меню у окна.

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

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

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

Комментарии

Клиентский прямоугольник - это наименьший прямоугольник, который полностью содержит в себе клиентскую область окна. Оконный прямоугольник - это наименьший прямоугольник, который полностью содержит в себе само окно.

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

См. также

AdjustWindowRectEx, CreateWindowEx, RECT .

 

AdjustWindowRectEx

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

BOOL AdjustWindowRectEx (

LPRECT lpRect , // указатель на структуру с координатами

// клиентской области

DWORD dwStyle , // стили окна

BOOL bMenu , // флаг наличия меню

DWORD dwExStyle // расширенный стиль

);

Параметры

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

dwStyle - определяет стили окна, размер которого вычисляется.

bMenu - определяет наличие меню у окна.

dwExStyle - определяет расширенный стиль окна, размер которого вычисляется.

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

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

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

Комментарии

Клиентский прямоугольник - это наименьший прямоугольник, который полностью содержит в себе клиентскую область окна. Оконный прямоугольник - это наименьший прямоугольник, который полностью содержит в себе само окно.

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

См . также

AdjustWindowRect, CreateWindowEx, RECT .

 

ArrangeIconicWindows

Функция ArrangeIconicWindows упорядочивает все минимизированные (в виде иконок) окна указанного родительского окна.

UINT ArrangeIconicWindows (

HWND hWnd // дескриптор родительского окна

);

Параметры

hWnd - идентифицирует родительское окно.

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

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

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

Комментарии

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

Приложение отправляет сообщение WM _ MDIICONARRANGE MDI -окну для упорядочивания его минимизированных дочерних MDI -окон.

См. также

CloseWindow, GetDesktopWindow .

 

BeginDeferWindowPos

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

HDWP BeginDeferWindowPos (

int nNumWindows // количество окон

);

Параметры

nNumWindows - определяет начальное количество окон, для которых необходимо хранить информацию об их положении. Функция DeferWindowPos при необходимости увеличивает размер данной структуры.

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

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

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

Комментарии

Структура, содержащая информацию о размере и положении для одного или более окон, является внутренней структурой Windows . Приложение не может иметь к ней прямой доступ.

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

Если одно из окон, описанных в структуре, имеет установленный флаг SWP _ HIDEWINDOW или SWP _ SHOWWINDOW, то не репозиционируется ни одно из окон.

Если Windows должна увеличить размер структуры по сравнению с начальным размером, задающимся значением параметра nNumWindows , но не может выделить достаточно памяти, то вся последовательность перемещений окон ( BeginDeferWindowPos, DeferWindowPos и EndDeferWindowPos ) заканчивается неудачей. Указанием максимально необходимого размера структуры приложение может выявить и обработать сбой в самом начале всего процесса.

См. также

DeferWindowPos, EndDeferWindowPos, SetWindowPos .

 

BringWindowToTop

Функция BringWindowToTop помещает указанное окно в вершину Z -последовательности. Если окно является окном верхнего уровня - оно активизируется. Если окно представляет собой дочернее окно - активизируется родительское окно верхнего уровня.

BOOL BringWindowToTop (

HWND hWnd // дескриптор окна

);

Параметры

hWnd - идентифицирует окно, помещаемое в вершину Z -последовательности.

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

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

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

Комментарии

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

Результат вызова этой функции похож на результат вызова SetWindowPos для изменения позиции окна в Z -последовательности, но вызов BringWindowToTop не делает указанное окно окном верхнего уровня.

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

См. также

SetWindowPos, SetActiveWindow, SetForegroundWindow .

 

CascadeWindows

Функция CascadeWindows располагает каскадом (каскадирует) указанные окна или дочерние окна указанного родительского окна.

WORD WINAPI CascadeWindows (

HWND hwndParent , // дескриптор родительского окна

UINT wHow , // типы окон, которые не подвергаются каскадированию

CONST RECT * lpRect , // прямоугольник, в которым каскадируются окна

UINT cKids , // количество каскадируемых окон

const HWND FAR *lpKids // массив дескрипторов окон

);

Параметры

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

wHow - определяет флаг каскадирования. Доступно единственное значение: MDITILE _ SKIPDISABLED, предотвращающее каскадирование дочерних MDI окон, не принимающих ввод пользователя ( disabled windows ).

lpRect - указатель на структуру типа SMALL _ RECT , которая определяет прямоугольную область, в экранных координатах, внутри которой каскадируются окна. Значение параметра может быть равно NULL, тогда используется клиентская область родительского окна.

cKids - определяет число элементов в массиве, заданным параметром lpKids . Значение параметра игнорируется, если значение lpKids равно нулю.

lpKids - указатель на массив дескрипторов окон, идентифицирующих каскадируемые окна. Если значение этого параметра равно NULL, каскадируются дочерние окна указанного родительского окна (или окна рабочего стола).

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

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

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

См. также

SMALL_RECT .

 

ChildWindowFromPoint

Функция ChildWindowFromPoint определяет, какое из дочерних окон, принадлежащих родительскому окну, содержит указанную точку (если таки дочерние окна существуют).

HWND ChildWindowFromPoint (

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

POINT Point // структура с координатами точки

);

Параметры

hWndParent - идентифицирует родительское окно.

Point - определяет структуру типа POINT , которая содержит клиентские координаты проверяемой точки.

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

В случае успеха возвращается дескриптор дочернего окна, которое содержит точку, даже если это дочернее окно скрыто или не принимает фокус ввода ( disabled ). Если точка лежит вне родительского окна, возвращается NULL . Если точка находится внутри родительского окна, но не лежит ни в одном из дочерних окон, возвращается дескриптор родительского окна.

Комментарии

Windows ведет внутренний список, содержащий дескрипторы дочерних окон, связанных с родительским окном. Порядок дескрипторов в этом списке зависит от Z -последовательности дочерних окон. Если указанная точка содержится более чем в одном дочернем окне, Windows возвращает дескриптор первого окна в списке, содержащего точку.

См. также

ChildWindowFromPointEx, POINT, WindowFromPoint .

 

ChildWindowFromPointEx

Функция ChildWindowFromPointEx определяет, какое из дочерних окон, принадлежащих родительскому окну, содержит указанную точку (если таки дочерние окна существуют). Функция может игнорировать невидимые, не принимающие фокус ввода ( disabled ) и прозрачные дочерние окна.

HWND ChildWindowFromPointEx (

HWND hwndParent , // дескриптор родительского окна

POINT pt , // структура с координатами точки

UINT uFlags // флаги игнорирования

);

Параметры

hWndParent - идентифицирует родительское окно.

Point - определяет структуру типа POINT , которая содержит клиентские координаты проверяемой точки.

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

Значение Пояснение
CWP _ ALL Не игнорировать дочерние окна.
CWP _ SKIPINVISIBLE Игнорировать невидимые дочерние окна.
CWP _ SKIPDISABLED Игнорировать не принимающие фокус ввода дочерние окна.
CWP _ SKIPTRANSPARENT Игнорировать прозрачные дочерние окна.

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

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

Комментарии

Windows ведет внутренний список, содержащий дескрипторы дочерних окон, связанных с родительским окном. Порядок дескрипторов в этом списке зависит от Z -последовательности дочерних окон. Если указанная точка содержится более чем в одном дочернем окне, Windows возвращает дескриптор первого окна в списке, содержащего точку и удовлетворяющего условию, определенному значением параметра uFlags .

См. также

ChildWindowFromPoint, POINT, WindowFromPoint .

 

CloseWindow

Функция CloseWindow минимизирует (но не разрушает) определенное окно.

BOOL CloseWindow (

HWND hWnd // дескриптор минимизируемого окна

);

Параметры

hWnd - идентифицирует минимизируемое окно.

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

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

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

Комментарии

Окно минимизируется путем уменьшения его до размеров иконки и помещения его в область иконок над панелью задач. Windows отображает иконку окна и его заголовок вместо самого окна. Для разрушения окна приложение должно использовать функцию DestroyWindow .

См. также

ArrangeIconicWindows, DestroyWindow, IsIconic, OpenIcon .

 

EndDeferWindowPos

Функция EndDeferWindowPos одновременно обновляет положение и размер одного или более окон в одном цикле обновления экрана.

BOOL EndDeferWindowPos (

HDWP hWinPosInfo // дескриптор внутренней структуры

);

Параметры

hWinPosInfo - идентифицирует внутреннюю структуру, содержащую информацию о размере и положении для одного или более окон. Эта внутренняя структура возвращается функцией BeginDeferWindowPos или более ранним вызовом функции DeferWindowPos .

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

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

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

Комментарии

Функция EndDeferWindowPos отправляет сообщения WM _ WINDOWPOSCHANGING и WM _ WINDOWPOSCHANGED каждому окну, идентифицируемому во внутренней структуре.

См. также

BeginDeferWindowPos, DeferWindowPos , WM_WINDOWPOSCHANGED, WM_WINDOWPOSCHANGING.

 

FindWindow

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

HWND FindWindow (

LPCTSTR lpClassName , // указатель на имя класса

LPCTSTR lpWindowName // указатель на имя окна

);

Параметры

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

lpWindowName - указывает на завершающуюся нулем строку, определяющую имя окна (заголовок окна). Если значение этого параметра равно NULL, то со значением lpWindowName совпадают имена всех окон.

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

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

См . также

EnumWindows, FindWindowEx, GetClassName, GlobalAddAtom .

 

FindWindowEx

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

HWND FindWindowEx (

HWND hwndParent , // дескриптор родительского окна

HWND hwndChildAfter , // дескриптор дочернего окна

LPCTSTR lpszClass , // указатель на имя класса

LPCTSTR lpszWindow // указатель на имя окна

);

Параметры

hwndParent - идентифицирует родительское окно, среди дочерних окон которого будет проводиться поиск.

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

hwndChildAfter - идентифицирует дочернее окно. Поиск начинается со следующего окна в Z- последовательности. Окно, указанное параметром hwndChildAfter , должно быть прямым дочерним окном указанного параметром hwndParent окна, а не порожденным окном.

Если значение параметра hwndChildAfter равно NULL, поиск начинается с первого дочернего окна.

Примечание: Если значения обоих параметров hwndParent и hwndChildAfter равны NULL, функция проводит поиск среди всех окон верхнего уровня.

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

lpszWindow - указывает на завершающуюся нулем строку, определяющую имя окна (заголовок окна). Если значение этого параметра равно NULL, то совпадающими со строкой считаются все имена окон.

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

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

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

См. также

EnumWindows, FindWindow, GetClassName, GlobalAddAtom .

 

GetClientRect

Функция GetClientRect возвращает координаты клиентской области окна. Клиентские координаты определяют верхний левый и правый нижний углы клиентской области. Поскольку клиентские координаты относительны левого угла клиентской области окна, то координатой верхнего левого угла является (0, 0).

BOOL GetClientRect (

HWND hWnd // дескриптор окна

LPRECT lpRect // адрес структуры для клиентских координат

);

Параметры

hWnd - идентифицирует окно, клиентские координаты которого возвращаются.

lpRect - указывает на структуру, получающую клиентские координаты. Члены left и top равны нулю. Члены right и bottom содержат ширину и высоту окна.

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

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

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

См . также

GetWindowRect, RECT.

 

SetWindowText

Функция SetWindowText изменяет текст заголовка (если заголовок существует) указанного окна. Если указанное окно является элементом управления, то изменяется текст этого элемента управления.

BOOL SetWindowText (

HWND hWnd , // дескриптор окна или элемента управления

LPCTSTR lpString // адрес строки

);

Параметры

hWnd - идентифицирует окно или элемент управления, чей текст изменяется.

lpString - указывает на завершающуюся нулем строку, используемую в качестве нового заголовка окна или текста элемента управления.

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

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

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

Комментарии

Функция SetWindowText отправляет сообщение WM_SETTEXT указанному окну или элементу управления. Тем не менее, если окно является окном списка, созданным с параметром WS_CAPTION, SetWindowText устанавливает текст для элемента управления, а не для элементов списка.

Функция SetWindowText не разворачивает символы табуляции ( ASCII -код 0 x 09). Символы табуляции отображаются как вертикальная черта (|).

См . также

GetWindowText , WM_SETTEXT.

 

Каретка

 

CreateCaret

Функция CreateCaret создает новый внешний вид для системной каретки и присваивает владение кареткой указанному окну. Каретка может быть прямоугольником, линией или битовым образом.

BOOL CreateCaret (

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

HBITMAP hBitmap , // дескриптор битового образа для каретки

int nWidth , // ширина каретки

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

);

Параметры

hWnd - идентифицирует окно, владеющее кареткой.

hBitmap - идентифицирует битовый образ, который определяет вид каретки. Если значение этого параметра равно NULL, каретка представляет собой сплошной прямоугольник. Если значение этого параметра равно ( HBITMAP ) 1, каретка представляет собой серый прямоугольник. Если значение этого параметра является дескриптором битового образа, то каретка представляет собой указанный битовый образ. Дескриптор битового образа должен быть создан функциями CreateBitmap, CreateDIBitmap или LoadBitmap .

Если значение hBitmap является дескриптором битового образа, CreateCaret игнорирует значения параметров nWidth и nHeight ; битовый образ задает свои собственные ширину и высоту.

nWidth - определяет ширину каретки в логических единицах. Если значение этого параметра равно нулю, ширина устанавливается в определяемую системой ширину рамки окна. Если значение hBitmap является дескриптором битового образа, CreateCaret игнорирует значение параметра nWidth .

nHeight - определяет высоту каретки в логических единицах. Если значение этого параметра равно нулю, высота устанавливается в определяемую системой высоту рамки окна. Если значение hBitmap является дескриптором битового образа, CreateCaret игнорирует значение параметра nHeight .

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

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

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

Комментарии

Значения параметров nWidth and nHeight определяют ширину и высоту каретки в логических единицах. Точные ширина и высота в пикселях зависят от режима отображения окна.

CreateCaret автоматически разрушает предыдущий вид каретки, если таковая есть, независимо от окна-владельца.

Пока приложение не вызовет функцию ShowCaret , каретка является скрытой.

Каретка является разделяемым ресурсом: в системе присутствует только одна каретка. Окно должно отображать каретку, только если оно активно или имеет фокус ввода с клавиатуры. Окно должно разрушить каретку перед тем, как оно потеряет фокус ввода с клавиатуры или станет неактивным.

Вы можете получить системные ширину и высоту окна, используя функцию GetSystemMetrics со значениями параметров SM _ CXBORDER и SM _ CYBORDER . Использование ширины или высоты рамки окна гарантирует, что каретка будет видна на экране с высоким разрешением.

См. также

CreateBitmap, CreateDIBitmap, DestroyCaret, GetSystemMetrics, HideCaret, LoadBitmap, ShowCaret .

 

DestroyCaret

Функция DestroyCaret разрушает текущую каретку, освобождает каретку от окна и удаляет изображение каретки с экрана.

Если каретка основана на растровом изображении, DestroyCaret не освобождает это изображение.

BOOL DestroyCaret ( VOID )

Параметры

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

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

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

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

Комментарии

DestroyCaret разрушает каретку только в том случае, ели окно в текущей задаче владеет ею. Если кареткой владеет окно, которое не принадлежит текущей задаче, DestroyCaret не выполняет никаких действий и возвращает FALSE.

Каретка является разделяемым ресурсом: в системе присутствует только одна каретка. Окно должно отображать каретку, только если оно активно или имеет фокус ввода с клавиатуры. Окно должно разрушить каретку перед тем, как оно потеряет фокус ввода с клавиатуры или станет неактивным.

См. также

CreateCaret, HideCaret, ShowCaret .

 

GetCaretBlinkTime

Функция GetCaretBlinkTime возвращает время мерцания каретки (время, требуемое для инвертирования пикселей каретки) в миллисекундах. Пользователь может установить это значение, используя Панель Управления.

UINT GetCaretBlinkTime ( VOID )

Параметры

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

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

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

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

См. также

SetCaretBlinkTime .

 

GetCaretPos

Функция GetCaretPos копирует позицию каретки, в клиентских координатах, в указанную структуру типа POINT .

BOOL GetCaretPos (

LPPOINT lpPoint // адрес структуры, получающей координаты

);

Параметры

lpPoint - указывает на структуру типа POINT , которая получает клиентские координаты каретки.

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

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

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

Комментарии

Позиция каретки всегда указывается в клиентских координатах окна, содержащего каретку.

См. также

SetCaretPos, POINT .

 

HideCaret

Функция HideCaret убирает каретку с экрана. Сокрытие каретки не разрушает ее текущей формы и не изменяет точки вставки.

BOOL HideCaret (

HWND hWnd // дескриптор окна с кареткой

);

Параметры

hWnd - идентифицирует окно, владеющее кареткой. Если значение этого параметра равно NULL, HideCaret ищет текущую задачу для окна, владеющего кареткой.

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

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

Комментарии

HideCaret прячет каретку только в том случае, если указанное окно ею владеет. Если указанное окно не владеет кареткой, то HideCaret не выполняет никаких действий и возвращает FALSE.

Сокрытие каретки кумулятивно. Если ваше приложение вызывает HideCaret пять раз, то оно также должно пять раз вызвать ShowCaret для появления каретки.

См . также

CreateCaret, DestroyCaret, GetCaretPos, SetCaretPos, ShowCaret .

 

SetCaretBlinkTime

Функция SetCaretBlinkTime устанавливает время мерцания каретки в указанное число миллисекунд.

BOOL SetCaretBlinkTime (

UINT uMSeconds // время мерцания каретки, в миллисекундах

);

Параметры

uMSeconds - определяет новое время мерцания, в миллисекундах.

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

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

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

Комментарии

Пользователь может установить время мерцания через Панель Управления. Приложения должны "уважать" настройки, сделанные пользователем. Функция SetCaretBlinkTime должна использоваться приложением только в том случае, если приложение позволяет пользователю установить время мерцания каретки, наподобие Панели Управления.

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

См. также

GetCaretBlinkTime .

 

SetCaretPos

Функция SetCaretPos перемещает каретку в заданную позицию. Если окно, которое владеет кареткой, было создано со стилем класса CS _ OWNDC, то указанные координаты зависят от режима отображения контекста устройства, связанного с окном.

BOOL SetCaretPos (

int X , // горизонтальная позиция

int Y // вертикальная позиция

);

Параметры

X - определяет новую x -координату каретки.

Y - определяет новую y -координату каретки.

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

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

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

Комментарии

SetCaretPos перемещает каретку вне зависимости от того, является ли каретка видимой, или нет.

Каретка является разделяемым ресурсом; в системе существует только один экземпляр каретки. Окно может установить положение каретки только в том случае, если оно владеет кареткой.

См. также

GetCaretPos, HideCaret, ShowCaret .

 

ShowCaret

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

BOOL ShowCaret (

HWND hWnd // дескриптор окна с кареткой

);

Параметры

hWnd - идентифицирует окно, владеющее кареткой. Если значение этого параметра равно NULL, ShowCaret ищет в текущей задаче окно, которое владеет кареткой.

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

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

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

Комментарии

ShowCaret показывает каретку только в случае, если указанное окно владеет кареткой, каретка имеет контур, и каретка не была скрыта два или более раз подряд. Если одно из этих условий нарушается, ShowCaret не производит никаких действий и возвращает FALSE.

Сокрытие каретки кумулятивно. Если ваше приложение вызывает HideCaret пять раз подряд, оно также должно вызвать ShowCaret пять раз подряд, прежде чем каретка станет видимой.

Каретка является разделяемым ресурсом: в системе присутствует только одна каретка. Окно должно отображать каретку, только если оно активно или имеет фокус ввода с клавиатуры.

См. также

CreateCaret, DestroyCaret, GetCaretPos, HideCaret, SetCaretPos .

 

Меню

 

CheckMenuItem

Функция CheckMenuItem устанавливает или снимает атрибут отметки пункта меню.

Функция CheckMenuItem была заменена функцией SetMenuItemInfo . Тем не менее, вы можете продолжать использовать CheckMenuItem , если вам не нужны дополнительные возможности SetMenuItemInfo .

DWORD CheckMenuItem (

HMENU hmenu , // дескриптор меню

UINT uIDCheckItem , // пункт меню

UINT uCheck // флаги пункта меню

);

Параметры

hmenu - идентифицирует интересующее меню.

uIDCheckItem - определяет пункт меню, чей атрибут отметки устанавливается, как определяется значением параметра uCheck .

uCheck - определяет флаги, которые управляют интерпретацией значения параметра uIDCheckItem и состоянием атрибута отметки пункта меню. Значение этого параметра должно представлять собой комбинацию MF_BYCOMMAND или MF_BYPOSITION и MF_CHECKED или MF_UNCHECKED.

Значение Пояснение
MF _ BYCOMMAND Указывает, что значение uIDCheckItem представляет собой идентификатор пункта меню.
MF _ BYPOSITION Указывает, что значение uIDCheckItem представляет собой относительную позицию пункта меню (отсчет позиции начинается с нуля).
MF_CHECKED Устанавливает атрибут выделения пункта меню в состояние "отмечен".
MF _ UNCHECKED Устанавливает атрибут выделения пункта меню в состояние "неотмечен".

Флаг MF _ BYCOMMAND является флагом по умолчанию, если флаг MF _ BYCOMMAND или MF _ BYPOSITION не установлен.

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

Возвращаемое значение идентифицирует предыдущее состояние пункта меню ( либо MF_CHECKED, либо MF_UNCHECKED). Если пункт меню не существует, возвращается 0 xFFFFFFFF .

Комментарии

Пункт в строке меню не может иметь отметку.

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

См. также

EnableMenuItem, GetMenuCheckMarkDimensions, GetMenuItemID, SetMenuItemBitmaps, SetMenuItemInfo .

 

CreateMenu

Функция CreateMenu создает меню. Изначально меню пустое, но оно может быть заполнено пунктами меню, используя функции InsertMenuItem, AppendMenu и InsertMenu .

HMENU CreateMenu ( VOID )

Параметры

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

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

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

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

Комментарии

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

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

См. также

AppendMenu, CreatePopupMenu, DestroyMenu, InsertMenu, SetMenu, InsertMenuItem .

 

CreatePopupMenu

Функция CreatePopupMenu создает выпадающее меню (drop-down menu), подменю ( submenu ) или меню быстрого вызова ( shortcut menu ). Меню изначально пустое. Вы можете вставить или добавить пункты меню, используя функцию InsertMenuItem . Вы также можете использовать функцию InsertMenu для вставки пунктов меню и функцию AppendMenu для добавления пунктов меню.

HMENU CreatePopupMenu ( VOID )

Параметры

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

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

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

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

Комментарии

Приложение может добавить новое меню в существующее меню, или оно может отобразить меню быстрого вызова, используя функции TrackPopupMenu или TrackPopupMenuEx .

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

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

См. также

AppendMenu, CreateMenu, DestroyMenu, InsertMenu, SetMenu, TrackPopupMenu, TrackPopupMenuEx, InsertMenuItem .

 

DeleteMenu

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

BOOL DeleteMenu (

HMENU hMenu , // дескриптор меню

UINT uPosition , // идентификатор или позиция пункта меню

UINT uFlags // флаг пункта меню

);

Параметры

hMenu - идентифицирует меню.

uPosition - задает удаляемый пункт меню, согласно значению параметра uFlags .

uFlags - определяет, каким образом интерпретируется значение параметра uPosition . Параметр uFlags должен принимать одно из следующих значений:

Значение Пояснение
MF_BYCOMMAND Указывет, что uPosition принимает идентификатор пункта меню. Флаг MF_BYCOMMAND явялется флагом по умолчанию, если явно не задан ни флаг MF_BYCOMMAND, ни MF_BYPOSITION.
MF_BYPOSITION Указывает, что uPosition принимает относительную, отсчитываемую от нуля позицию пункта меню.

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

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

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

Комментарии

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

См . также

DrawMenuBar, RemoveMenu .

 

GetMenuCheckMarkDimensions

Функция является устаревшей. Используйте GetSystemMetrics со значениями CXMENUCHECK и CYMENUCHECK для извлечения размеров битового образа.

Функция GetMenuCheckMarkDimensions возвращает размеры битового образа отметки по умолчанию пункта меню. Windows отображает этот битовый образ в пункте меню. Перед вызовом функции SetMenuItemBitmaps для изменения битового образа отметки для пункта меню, приложение должно определить корректный размер образа, вызвав GetMenuCheckMarkDimensions .

LONG GetMenuCheckMarkDimensions ( VOID )

Параметры

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

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

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

См. также

SetMenuItemBitmaps .

 

GetMenuItemCount

Функция GetMenuItemCount определяет количество пунктов в указанном меню.

int GetMenuItemCount (

HMENU hMenu // дескриптор меню

);

Параметры

hMenu - определяет дескриптор меню, для которого будет определяться количество пунктов .

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

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

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

См . также

GetMenuItemID .

 

GetMenuItemID

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

UINT GetMenuItemID (

HMENU hMenu , // дескриптор меню

int nPos // позиция пункта меню

);

Параметры

hMenu - идентифицирует меню, содержащее пункт меню, идентификатор которого извлекается.

nPos - определяет относительную позицию (отсчет начинается с нуля) пункта меню, идентификатор которого извлекается.

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

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

Если идентификатор меню равен NULL, или указанный пункт меню открывает подменю, возвращается 0 xFFFFFFFF .

См. также

GetMenuItemCount, GetMenuString .

 

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 .

 

GetMenuState

Функция GetMenuState извлекает флаги меню, ассоциированные с указанным пунктом меню. Если пункт меню открывает подменю, функция также возвращает количество пунктов в подменю.

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

UINT GetMenuState (

HMENU hMenu , // дескриптор меню

UINT uId , // запрашиваемый пункт меню

UINT uFlags // флаги меню

);

Параметры

hMenu - идентифицирует меню, которое содержит пункт, чьи флаги извлекаются.

uId - определяет пункт меню, для которого извлекаются флаги меню.

uFlags - определяет, как интерпретируется значение параметра uId . Параметр uFlags должен принимать одно из следующих значений:

Значение Пояснение
MF_BYCOMMAND Указывает, что uPosition принимает идентификатор пункта меню. Флаг MF_BYCOMMAND является флагом по умолчанию, если явно не задан ни флаг MF_BYCOMMAND, ни MF_BYPOSITION.
MF_BYPOSITION Указывает, что uPosition принимает относительную, отсчитываемую с нуля позицию пункта меню.

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

Если указанного пункта меню не существует, возвращается 0 xFFFFFFFF .

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

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

Значение Пояснение
MF_CHECKED Помещает отметку в пункт меню (только для выпадающих меню, меню быстрого вызова команд и подменю).
MF_DISABLED Запрещает пункт меню.
MF_GRAYED Запрещает пункт меню и делает его затененным.
MF_HILITE Подсвечивает пункт меню.
MF_MENUBARBREAK То же, что и флаг MF _ MENUBREAK, за исключением выпадающих меню, меню быстрого вызова команд и подменю, где новый столбец от старого столбца отделяется вертикальной чертой.
MF_MENUBREAK Помещает новый пункт в новой строке (для строк меню) или в новый столбец (для выпадающих меню, меню быстрого вызова команд и подменю) без разделения столбцов.
MF_SEPARATOR Создает горизонтальную разделяющую линию (для выпадающих меню, меню быстрого вызова команд и подменю).

См. также

GetMenu, GetMenuItemCount, GetMenuItemID, GetMenuItemInfo, GetMenuString .

 

SetMenuItemBitmaps

Функция SetMenuItemBitmaps связывает указанный битовый образ с пунктом меню. В зависимости от того, является ли пункт меню отмеченным или нет, Windows отображает соответствующий битовый образ в пункте меню.

BOOL SetMenuItemBitmaps (

HMENU hMenu , // дескриптор меню

UINT uPosition , // пункт меню для получения нового битового образа

UINT uFlags , // флаги пункта меню

HBITMAP hBitmapUnchecked , // дескриптор битового образа

// для неотмеченного состояния

HBITMAP hBitmapChecked // дескриптор битового образа

// для отмеченного состояния

);

Параметры

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

uPosition - определяет подлежащий изменению пункт меню в соответствии со значением параметра uFlags .

uFlags - определяет, как интерпретируется значение параметра uPosition . Параметр uFlags должен быть одним из следующих значений:

Значение Пояснение
MF _ BYCOMMAND Указывает, что значение uPosition представляет собой идентификатор пункта меню. Если не задан ни один из флагов, то используется флаг по умолчанию - MF _ BYCOMMAND .
MF _ BYPOSITION Указывает, что значение uPosition представляет собой относительную позицию пункта меню (отсчет позиции начинается с нуля).

hBitmapUnchecked - идентифицирует битовый образ, отображаемый, когда пункт меню не отмечен.

hBitmapChecked - идентифицирует битовый образ, отображаемый, когда пункт меню отмечен.

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

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

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

Комментарии

Если значение параметра hBitmapUnchecked или hBitmapChecked равно NULL, Windows ничего не отображает в соответствующем пункте меню для соответствующего состояния. Если значения обоих параметров равны NULL, то Windows отображает стандартный битовый образ отметки, соответствующей отмеченному состоянию, и убирает битовый образ, когда пункт меню не отмечен.

При разрушении меню эти битовые образы не разрушаются: их должно разрушить приложение.

Windows NT : Функция GetMenuCheckMarkDimensions извлекает размеры отметки по умолчанию, используемой для пунктов меню. Эти значения используются для определения соответствующих размеров битовых образов, используемых функцией SetMenuItemBitmaps .

Windows 95: Функция GetMenuCheckMarkDimensions устарела . Используйте функцию GetsystemMetrics с параметрами CXMENUCHECK и CYMENUCHECK для извлечения размеров битовых образов.

См. также

GetMenu, GetMenuCheckMarkDimensions .

 

Оконные процедуры

 

WindowProc

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

LRESULT CALLBACK WindowProc (

HWND hwnd , // дескриптор окна

UINT uMsg , // идентификатор сообщения

WPARAM wParam , // первый параметр сообщения

LPARAM lParam // второй параметр сообщения

);

Параметры

hWnd - идентифицирует окно, получающее сообщение.

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

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

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

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

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

Комментарии

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

См. также

CallWindowProc, DefWindowProc, RegisterClass .

 

Строки

 

CharPrev

Функция CharPrev возвращает указатель на предшествующий символ в строке. Функция заменяет функцию AnsiPrev .

LPTSTR CharPrev (

LPCTSTR lpszStart , // указатель на первый символ

LPCTSTR lpszCurrent // указатель на текущий символ

);

Параметры

lpszStart - указатель на начало строки.

lpszCurrent - указатель на текущий символ в завершающейся нулем строке.

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

В случае успеха возвращается указатель на предшествующий символ в строке, или на первый символ в строке, если значения параметров lpszCurrent и lpszStart совпадают.

См. также

CharNext, CharPrevExA .

 

CharToOem

Функция CharToOem преобразует строку в набор символов ОЕМ. Эта функция заменяет функцию AnsiToOem .

BOOL CharToOem (

LPCTSTR lpszSrc , // указатель на преобразуемую строку

LPSTR lpszDst // указатель на буфер для преобразованной строки

);

Параметры

lpszSrc - указывает на завершающуюся нулем преобразуемую строку.

lpszDst - указывает на буфер для преобразованной строки. Если CharToOem используется как ANSI -функция, то можно установить параметр lpszDst на тот же адрес, что и параметр lpszSrc . Это не может быть осуществлено в случае использования CharToOem как Unicode -функции.

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

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

См. также

CharToOemBuff, OemToChar, OemToCharBuff .

 

CharToOemBuff

Функция CharToOemBuff преобразует указанное количество символов в строке в набор символов ОЕМ. Эта функция заменяет функцию AnsiToOemBuff .

BOOL CharToOemBuff (

LPCTSTR lpszSrc , // указатель на преобразуемую строку

LPSTR lpszDst , // указатель на преобразованную строку

DWORD cchDstLength // длина преобразуемой строки в байтах

);

Параметры

lpszSrc - указывает на завершающуюся нулем преобразуемую строку.

lpszDst - указывает на буфер для преобразованной строки. Если CharToOemBuff используется как ANSI -функция, то можно установить параметр lpszDst на тот же адрес, что и параметр lpszSrc . Это не может быть осуществлено в случае использования CharToOemBuff как Unicode -функции.

cchDstLength - определяет количество символов для преобразования в строке, идентифицируемой значением параметра lpszSrc .

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

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

См. также

CharToOem, OemToChar, OemToCharBuff .

 

EnumCodePagesProc

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

BOOL CALLBACK EnumCodePagesProc (

LPTSTR lpCodePageString // указатель на строку идентификатора

// кодовой страницы

);

Параметры

lpCodePageString - указатель на строковый буфер, содержащий завершающуюся нулем строку идентификатора кодовой страницы.

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

Для продолжения перечисления функция обратного вызова должна возвращать TRUE.

Для остановки перечисления, функция обратного вызова должна возвращать FALSE.

Комментарии

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

EnumCodePagesProc может выполнять любые желаемые действия.

Приложение регистрирует функцию EnumCodePagesProc , передавая ее адрес в функцию EnumSystemCodePages .

Значение типа CODEPAGE _ ENUMPROC является указателем на функцию EnumCodePagesProc .

См. также

EnumSystemCodePages .

 

GetACP

Функция GetACP возвращает идентификатор текущей кодовой страницы ANSI для системы.

UINT GetACP ( VOID )

Параметры

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

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

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

Комментарии

Ниже представлены идентификаторы кодовых страниц ANSI :

Идентификатор Значение
874 Тайская
932 Японская
936 Китайская (КНР, Сингапур)
949 Корейская
950 Китайская (Тайвань, Гонконг)
1200 Юникод ( ISO 10646)
1250 Восточноевропейская ( Windows 3.1 )
1251 Кириллическая ( Windows 3.1 )
1252 Latin 1( Windows 3.1; США, Западная Европа)
1253 Греческая ( Windows 3.1 )
1254 Турецкая ( Windows 3.1 )
1255 Еврейская
1256 Арабская
1257 Балтийская

См. также

GetCPInfo, GetOEMCP .

 

GetCPInfo

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

BOOL GetCPInfo (

UINT CodePage , // идентификатор кодовой страницы

LPCPINFO lpCPInfo // адрес структуры для информации

);

Параметры

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

Значение Пояснение
CP_ACP Использует кодовую страницу ANSI по умолчанию.
CP_MACCP Использует кодовую страницу Макинтош по умолчанию.
CP_OEMCP Использует кодовую страницу OEM по умолчанию.

lpCPInfo - указатель на структуру типа CPINFO , которая получает информацию о кодовой странице.

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

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

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

Комментарии

Если кодовая страница не установлена или недоступна, GetCPInfo устанавливает значение последней ошибки в ERROR_INVALID_PARAMETER .

См. также

GetACP, GetOEMCP, CPINFO .

 

GetSystemDefaultLCID

Функция GetSystemDefaultLCID извлекает идентификатор системной локали по умолчанию.

LCID GetSystemDefaultLCID ( VOID )

Параметры

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

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

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

См. также

GetLocaleInfo, GetUserDefaultLCID, MAKELCID .

 

GetThreadLocale

Функция GetThreadLocale возвращается текущую локаль вызывающего потока.

LCID GetThreadLocale ( VOID )

Параметры

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

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

Функция возвращает 32-битный идентификатор локали вызывающего потока.

Комментарии

При создании потока ему дается системная локаль потока по умолчанию. Система читает системную локаль потока по умолчанию из реестра при загрузке системы. Системная локаль потока по умолчанию может быть изменена в Панели управления.

См. также

SetThreadLocale, GetSystemDefaultLCID, GetUserDefaultLCID .

 

IsValidCodePage

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

BOOL IsValidCodePage (

UINT CodePage // проверяемая кодовая страница

);

Параметры

CodePage - определяет кодовую страницу, подлежащую проверке. Каждая кодовая страница идентифицируется уникальным номером.

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

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

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

Комментарии

Кодовая страница действительна только в том случае, если она установлена в системе.

Ниже приведены идентификаторы кодовых страниц ОЕМ:

Идентификатор Пояснение
037 EBCDIC .
437 MS - DOS (США).
500 EBCDIC "500V1" .
708 Арабская ( ASMO 708).
709 Арабская ( ASMO 449+, BCON V4).
710 Арабская (Transparent Arabic).
720 Арабская (Transparent ASMO).
737 Греческая (ранее 437 G ).
775 Балтийская.
850 MS - DOS многоязыковая ( Latin I ).
852 MS - DOS восточноевропейская ( Latin II ).
855 Кириллица IBM .
857 Турецкая IBM .
860 MS - DOS (Португалия).
861 MS - DOS (Исландия).
862 Еврейская.
863 MS - DOS (Французская Канада).
864 Арабская.
865 MS - DOS скандинавская.
866 MS - DOS русская.
869 Современная греческая IBM .
874 Тайская.
875 EBCDIC .
932 Японская.
936 Китайская (КНР, Сингапур).
949 Корейская.
950 Китайская (Тайвань, Гонконг).
1026 EBCDIC.
1200 Unicode (BMP или ISO 10646).
1250 Windows 3.1 (Восточная Европа).
1251 Windows 3.1 ( Кириллица ).
1252 Windows 3.1 США (ANSI).
1253 Греческая Windows 3.1.
1254 Турецкая Windows 3.1.
1255 Еврейская.
1256 Арабская.
1257 Балтийская.
1361 Корейская ( Johab ).
10000 Macintosh латинская.
10001 Macintosh японская .
10006 Macintosh греческая I .
10007 Macintosh кириллическая.
10029 Macintosh Latin 2.
10079 Macintosh (Исландия).
10081 Macintosh турецкая.

См. также

GetACP, GetCPInfo, GetOEMCP .

 

SetThreadLocale

Функция SetThreadLocale устанавливает текущую локаль вызывающего потока.

BOOL SetThreadLocale (

LCID Locale // идентификатор локали

);

Параметры

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

Значение Пояснение
LOCALE_SYSTEM_DEFAULT Системная локаль по умолчанию.
LOCALE_USER_DEFAULT Пользовательская локаль по умолчанию.

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

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

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

Комментарии

При создании потока ему дается системная локаль потока по умолчанию. Система читает системную локаль потока по умолчанию из реестра при загрузке системы. Системная локаль потока по умолчанию может быть изменена в Панели управления.

См. также

GetThreadLocale, GetSystemDefaultLCID, GetUserDefaultLCID .

 

Курсор

 

ClipCursor

Функция ClipCursor заключает курсор в прямоугольную область на экране. Если последующая позиция курсора (установленная функцией SetCursorPos или мышью) лежит вне этой прямоугольной области, Windows автоматически устанавливает координату для сохранения курсора внутри области.

BOOL ClipCursor (

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

);

Параметры

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

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

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

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

Комментарии

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

Вызывающий процесс должен иметь доступ WINSTA _ READATTRIBUTES к оконной станции ( window station ). Разъяснение термина window station смотрите в описании функции CreateWindowStation .

См. также

GetClipCursor, GetCursorPos, RECT, SetCursorPos .

 

CopyCursor

Функция CopyCursor копирует курсор.

HCURSOR CopyCursor (

HCURSOR pcur // дескриптор копируемого курсора

);

Параметры

pcur - идентифицирует копируемый курсор.

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

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

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

Комментарии

CopyCursor позволяет приложению или динамически подключаемой библиотеке ( DLL ) получить дескриптор курсора, которым владеет другой модуль. Затем, если другой модуль завершил свою работу, приложение все еще будет иметь возможность использовать этот курсор.

См. также

CopyIcon, GetCursor, SetCursor, ShowCursor .

 

CreateCursor

Функция CreateCursor создает курсор, имеющий указанный размер, битовый шаблон и горячую точку.

HCURSOR CreateCursor (

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

int xHotSpot , // положение горячей точки по горизонтали

int yHotSpot , // положение горячей точки по вертикали

int nWidth , // ширина курсора

int nHeight , // высота курсора

CONST VOID * pvANDPlane , // указатель на массив битовой маски И

CONST VOID * pvXORPlane // указатель на массив битовой маски ИЛИ

);

Параметры

hInst - идентифицирует текущий экземпляр приложения, создающего курсор.

xHotSpot - определяет положение горячей точки курсора по горизонтали.

yHotSpot - определяет положение горячей точки курсора по вертикали.

nWidth - определяет ширину курсора в пикселях.

nHeight - определяет высоту курсора в пикселях.

pvANDplane - указывает на массив байт, содержащих значения битов для битовой маски И курсора, как в аппаратно-зависимом монохромном растровом изображении.

pvXORplane - указывает на массив байт, содержащих значения битов для битовой маски ИЛИ курсора, как в аппаратно-зависимом монохромном растровом изображении.

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

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

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

Комментарии

Значения параметров nWidth и nHeight должны указывать ширину и высоту, поддерживаемые текущим драйвером дисплея, потому что система не может создать курсоры других размеров. Для определения того, какие ширина и высота поддерживаются драйвером дисплея, вызовите функцию GetSystemMetrics , указав значения SM _ CXCURSOR и SM _ CYCURSOR .

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

См. также

CreateIcon, DestroyCursor, GetModuleHandle, GetSystemMetrics, SetCursor .

 

DestroyCursor

Функция DestroyCursor разрушает курсор, созданный функцией CreateCursor , и освобождает память, занимаемую курсором. Не используйте функцию для разрушения курсора, который не был создан функцией CreateCursor .

BOOL DestroyCursor (

HCURSOR hCursor // дескриптор разрушаемого курсора

);

Параметры

hCursor - идентифицирует разрушаемый курсор. Курсор не должен использоваться.

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

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

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

См. также

CreateCursor .

 

GetClipCursor

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

BOOL GetClipCursor (

LPRECT lpRect // адрес структуры для прямоугольника

);

Параметры

lpRect - указываете на структуру типа RECT , которая получает экранные координаты прямоугольника. Структура получает размеры экрана, если курсор не заключен в прямоугольник.

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

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

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

Комментарии

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

Вызывающий процесс должен иметь доступ WINSTA _ READATTRIBUTES к оконной станции ( window station ). Разъяснение термина window station смотрите в описании функции CreateWindowStation .

См. также

ClipCursor, GetCursorPos, RECT .

 

GetCursor

Функция GetCursor возвращает дескриптор текущего курсора.

HCURSOR GetCursor ( VOID )

Параметры

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

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

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

Если курсора нет, возвращает NULL.

См. также

SetCursor .

 

GetCursorPos

Функция GetCursorPos извлекает положение курсора в экранных координатах.

BOOL GetCursorPos (

LPPOINT lpPoint // адрес структуры для положения курсора

);

Параметры

lpPoint - указывает на структуру типа POINT , которая получает экранные координаты курсора.

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

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

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

Комментарии

Положение курсора всегда дается в экранных координатах и не подвержено воздействию режима отображения окна, которое содержит курсор.

Вызывающий процесс должен иметь доступ WINSTA _ READATTRIBUTES к оконной станции ( window station ). Разъяснение термина window station смотрите в описании функции CreateWindowStation .

См. также

ClipCursor, POINT, SetCursor, SetCursorPos, ShowCursor .

 

LoadCursor

Функция LoadCursor загружает указанный ресурс курсора из исполняемого (. EXE ) файла, связанного с экземпляром приложения.

HCURSOR LoadCursor (

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

LPCTSTR lpCursorName // строка с именем курсора или

// идентификатор ресурса

);

Параметры

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

lpCursorName - указывает на завершающуюся нулем строку, которая сдержит имя ресурса загружаемого курсора. В качестве альтернативы, значение этого параметра может содержать идентификатор ресурса в младшем слове и нуль в старшем. Используйте макрос MAKEINTRESOURCE для создания данного значения.

Для использования предопределенных курсоров Windows установите значение параметра hInstance в NULL, а значение параметра lpCursorName в одно из следующих значений:

Значение Описание
IDC_ARROW Обычный курсор-стрелка.
IDC_IBEAM Курсор в виде буквы " I ".
IDC_WAIT Курсор "большие песочные часы".
IDC_CROSS Курсор-перекрестие.
IDC_UPARROW Курсор "стрелка вверх".
IDC_SIZE Только Windows NT : четырехконечная стрелка
IDC _ ICON Только Windows NT : пустая иконка.
IDC_SIZENWSE Курсор изменения размера. Ориентирован с северо-запада на юго-восток.
IDC_SIZENESW Курсор изменения размера. Ориентирован с северо-востока на юго-запад.
IDC_SIZEWE Горизонтальный курсор изменения размера.
IDC_SIZENS Вертикальный курсор изменения размера.
IDC_SIZEALL Курсор изменения всех размеров. То же, что и IDC _ SIZE.
IDC _ NO Перечеркнутый наискосок круг.
IDC _ APPSTARTING Курсор "маленькие песочные часы со стрелкой".

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

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

Комментарии

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

LoadCursor просматривает ресурс на предмет курсора, наиболее подходящего для текущего устройства изображения. Ресурс курсора может быть цветным или монохромным битовым образом.

См. также

LoadImage, MAKEINTRESOURCE, SetCursor, SetCursorPos, ShowCursor .

 

LoadCursorFromFile

Функция LoadCursorFromFile создает курсор, основанный на данных, содержащихся в файле. Файл задается его именем или идентификатором системного курсора. Функция возвращает дескриптор созданного курсора. Файлы, содержащие данные, могут быть либо файлами курсоров (. CUR ), либо файлами анимированных курсоров (. ANI ).

HCURSOR LoadCursorFromFile (

LPCTSTR lpFileName // указатель на имя файла с курсором или

// идентификатор системного курсора

);

Параметры

lpFileName - указывает на источник файловых данных, используемых для создания курсора. Файлы, должны быть либо файлами курсоров (. CUR ), либо файлами анимированных курсоров (. ANI ).

Если старшее слово lpFileName не равно нулю, то значение lpFileName указывает на строку с полным именем файла, содержащего данные для курсора.

Если старшее слово lpFileName равно нулю, нижнее слово представляет собой идентификатор системного курсора. Затем функция просматривает секцию [ Cursors ] в файле WIN . INI на предмет файла, связанного с именем указанного системного курсора. Ниже приводится список имен системных курсоров и идентификаторов:

Имена системных курсоров Идентификаторы системных курсоров
"Arrow" OCR_NORMAL
"IBeam" OCR_IBEAM
"Wait" OCR_WAIT
"Crosshair" OCR_CROSS
"UpArrow" OCR_UP
"Size" OCR_SIZE
"Icon" OCR_ICON
"SizeNWSE" OCR_SIZENWSE
"SizeNESW" OCR_SIZENESW
"SizeWE" OCR_SIZEWE
"SizeNS" OCR_SIZENS
"SizeAll" OCR_SIZEALL
"No" OCR_NO
"AppStarting" OCR_APPSTARTING

Например, если в WIN . INI содержится следующее:

[Cursors]

Arrow = "arrow.ani"

то вызов LoadCursorFromFile (( LPWSTR ) OCR _ NORMAL ) заставит функцию LoadCursorFromFile получить данные из файла ARROW . ANI . Если WIN . INI не содержит строки для указанного системного курсора, вызов функции завершится неудачей и функция вернет NULL .

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

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

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

См. также

LoadCursor, SetCursor, SetSystemCursor .

 

SetCursor

Функция SetCursor устанавливает курсор.

HCURSOR SetCursor (

HCURSOR hCursor // дескриптор курсора

);

Параметры

hCursor - идентифицирует курсор. Курсор должен быть создан функцией CreateCursor или загружен функциями LoadCursor или LoadImage . Если значение этого параметра равно NULL, курсор убирается с экрана.

Windows 95: Ширина и высота курсора должны быть значениями, возвращаемые функцией GetSystemMetrics для параметров SM _ CXCURSOR и SM _ CYCURSOR . В дополнение, глубина цвета курсора должна совпадать с глубиной цвета экрана, или курсор будет монохромным.

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

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

Если предыдущего курсора нет, возвращается NULL .

Комментарии

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

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

Если ваше приложение должно устанавливать курсор, когда он находится в окне, будьте уверены, что курсор класса для указанного класса окна установлен в NULL . Если курсор класса не NULL, система восстанавливает курсор класса каждый раз, когда перемещается мышь.

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

См. также

CreateCursor, GetCursor, GetSystemMetrics, LoadCursor, LoadImage, SetCursorPos, ShowCursor .

 

SetCursorPos

Функция SetCursorPos перемещает курсор в указанные экранные координаты. Если новые координаты находятся вне экранного прямоугольника, установленного последним вызовом функции ClipCursor , Windows автоматически устанавливает координаты, так что курсор остается внутри прямоугольника.

BOOL SetCursorPos (

int X , // горизонтальное положение

int Y // вертикальное положение

);

Параметры

X - определяет новую x -координату курсора в экранных координатах.

Y - определяет новую y -координату курсора в экранных координатах.

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

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

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

Комментарии

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

Вызывающий процесс должен иметь доступ WINSTA _ READATTRIBUTES к оконной станции ( window station ). Разъяснение термина window station смотрите в описании функции CreateWindowStation .

См. также

ClipCursor, GetCursorPos, SetCaretPos, SetCursor, ShowCursor .

 

SetSystemCursor

Функция SetSystemCursor заменяет содержимое системного курсора с указанным id содержимым курсора, определенным значением параметра hcur и затем разрушает hcur . Эта функция позволяет приложению изменять системные курсоры.

BOOL SetSystemCursor (

HCURSOR hcur , // устанавливает указанный системный курсор в содержимое

// данного курсора, а затем разрушает этот курсор

DWORD id // системный курсор, заданный его идентификатором

);

Параметры

hcur - дескриптор курсора. Функция заменяет содержимое системного курсора с указанным id содержимым курсора, определенным значением параметра hcur и затем разрушает hcur , вызывая DestroyCursor ( hcur ).

id - идентификатор системного курсора.

Ниже приведен список идентификаторов системных курсоров:

Значение Описание
OCR _ NORMAL Обычный курсор-стрелка.
OCR _ IBEAM Курсор в виде буквы " I ".
OCR _ WAIT Курсор "большие песочные часы".
OCR _ CROSS Курсор-перекрестие.
OCR _ UP Курсор "стрелка вверх".
OCR _ SIZE Курсор изменения размеров.
OCR _ ICON Курсор-иконка.
OCR _ SIZENWSE Курсор изменения размера. Ориентирован с северо-запада на юго-восток.
OCR _ SIZENESW Курсор изменения размера. Ориентирован с северо-востока на юго-запад.
OCR_SIZEWE Горизонтальный курсор изменения размера.
OCR _ SIZENS Вертикальный курсор изменения размера.
OCR _ SIZEALL Курсор изменения всех размеров. То же, что и OCR _ SIZE.
OCR_SIZENO Курсор международного символа запрещения, отрицания.
OCR _ APPSTARTING Курсор "маленькие песочные часы со стрелкой".

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

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

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

См. также

DestroyCursor, LoadCursor, LoadCursorFromFile, SetCursor .

 

ShowCursor

Функция ShowCursor отображает или скрывает курсор.

int ShowCursor (

BOOL bShow // флаг видимости курсора

);

Параметры

bShow - определяет, инкрементируется или декрементируется внутренний счетчик отображения. Если значение bShow равно TRUE - внутренний счетчик отображения увеличивается на единицу. Если значение bShow равно FALSE - внутренний счетчик отображения уменьшается на единицу.

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

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

Комментарии

Функция устанавливает внутренний счетчик, определяющий, должен ли быть отображен курсор. Курсор отображается лишь в том случае, если счетчик отображения больше нуля или равен нулю. Если в системе установлена мышь, то начальное значение счетчика равно 0. Если мышь в системе не установлена, начальное значение счетчика равно -1.

См. также

ClipCursor, GetCursorPos, SetCursor, SetCursorPos .

 

Ошибки

 

Beep

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

BOOL Beep (

DWORD dwFreq , // частота звука в герцах

DWORD dwDuration // продолжительность звука в миллисекундах

);

Параметры

Windows NT :

dwFreq - определяет частоту звука в герцах. Значение параметра должно лежать в диапазоне от 37 до 32,767 (0 x 25 до 0 x 7 FFF ).

Windows 95:

Значение параметра игнорируется.

Windows NT :

dwDuration - определяет продолжительность звука в миллисекундах.

Windows 95:

Значение параметра игнорируется.

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

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

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

Комментарии

Windows 95: функция Beep игнорирует значения параметров dwFreq и dwDuration . На компьютерах со звуковой картой функция воспроизводит звуковое событие по умолчанию. На компьютерах без звуковой карты функция воспроизводит стандартный системный звук через динамик компьютера.

См. также

MessageBeep .

 

Ресурсы

 

BeginUpdateResource

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

HANDLE BeginUpdateResource (

LPCTSTR pFileName , // имя файла, в котором будут обновляться ресурсы

BOOL bDeleteExistingResources // опция удаления

);

Параметры

pFileName - указатель на завершающуюся нулем строку, которая определяет исполняемый файл, в котором необходимо обновить ресурсы. Приложение должно иметь возможность получить разрешение на запись в файл; оно не может выполняться в этот момент. Если значение pFileName не определяет полный путь, Windows ищет файл в текущей директории.

bDeleteExistingResources - определяет, удалять ли существующие ресурсы, находящиеся в файле, определяемом значением параметра pFileName . Если значение параметра bDeleteExistingResources равно TRUE, существующие ресурсы удаляются и обновленный исполняемый файл содержит только ресурсы, добавленные функцией UpdateResource . Если значение параметра bDeleteExistingResources равно FALSE, обновленный исполняемый файл содержит существующие ресурсы до тех пор, пока они не будут явно удалены или заменены функцией UpdateResource .

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

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

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

См. также

EndUpdateResource, UpdateResource .

 

FindResource

Функция FindResource определяет местоположение ресурса с указанным типом и именем в указанном модуле.

HRSRC FindResource (

HMODULE hModule , // дескриптор модуля ресурса

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

LPCTSTR lpType // указатель на тип ресурса

);

Параметры

hModule - дескриптор модуля, чей исполняемый файл содержит ресурс. Значение параметра, равное NULL, определяет дескриптор модуля, связанного с загрузочным файлом, который использовала операционная система для создания текущего процесса.

lpName - определяет имя ресурса. Для дополнительной информации смотрите раздел "Комментарии".

lpType - определяет тип ресурса. Для дополнительной информации смотрите раздел "Комментарии". Для стандартных типов ресурсов этот параметр может принимать одно из следующих значений:

Значение Пояснение
RT_ACCELERATOR Таблица акселераторов.
RT_ANICURSOR Анимированный курсор.
RT_ANIICON Анимированная иконка.
RT_BITMAP Битовое изображение.
RT_CURSOR Зависимый от аппаратного обеспечения курсор.
RT_DIALOG Диалоговое окно.
RT_FONT Шрифт .
RT_FONTDIR Таблица шрифтов .
RT_GROUP_CURSOR Независимый от аппаратного обеспечения курсор.
RT_GROUP_ICON Независимая от аппаратного обеспечения иконка.
RT_ICON Зависимая от аппаратного обеспечения иконка.
RT_MENU Меню .
RT_MESSAGETABLE Элемент таблицы сообщений.
RT_RCDATA Определяемые приложением ресурсы.
RT_STRING Элемент таблицы строк.
RT_VERSION Информация о версии.

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

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

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

Комментарии

Если старшее слово значения параметра lpName или lpType равно нулю, младшее слово определяет целочисленный идентификатор имени или типа указанного ресурса. В противном случае, оба значения этих параметров представляют собой длинные указатели на завершающиеся нулем строки. Если первый символ строки равен '#', оставшиеся символы представляют собой десятичное число, которое определяет целочисленный идентификатор имени или типа ресурса. Например, строка "#258" представляет собой целочисленный идентификатор 258.

Приложение может уменьшить количество памяти, необходимое ресурсу, обращаясь к нему по целочисленному идентификатору вместо имени.

Приложение может использовать FindResource для поиска ресурса любого типа, но эта функция должна быть использована только в том случае, если приложение должно иметь доступ к двоичным данным ресурсов, когда оно впоследствии вызывает функции LoadLibrary и LockResource .

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

Функция Действие
FormatMessage Загружает и форматирует элемент таблицы сообщений.
LoadAccelerators Загружает таблицу акселераторов.
LoadBitmap Загружает битовое изображение.
LoadCursor Загружает курсор.
LoadIcon Загружает иконку.
LoadMenu Загружает меню.
LoadString Загружает элемент таблицы строк.

Например, приложение должно и c пользовать функцию LoadIcon для загрузки иконки для ее отображения на экране. Тем не менее, приложение должно использовать функции FindResource и LoadResource , если оно загружает иконку для копирования ее данных в другое приложение.

См. также

FindResourceEx, FormatMessage, LoadAccelerators, LoadBitmap, LoadCursor, LoadIcon, LoadMenu, LoadResource, LoadString, LockResource, SizeofResource .

 

FindResourceEx

Функция FindResourceEx определяет местоположение ресурса с указанным типом, именем и языком в указанном модуле.

HRSRC FindResourceEx (

HMODULE hModule , // дескриптор модуля ресурса

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

LPCTSTR lpType // указатель на тип ресурса

WORD wLanguage // язык ресурса

);

Параметры

hModule - дескриптор модуля, чей исполняемый файл содержит ресурс. Значение параметра, равное NULL, определяет дескриптор модуля, связанного с загрузочным файлом, который использовала операционная система для создания текущего процесса.

lpName - определяет имя ресурса. Для дополнительной информации смотрите раздел "Комментарии".

lpType - определяет тип ресурса. Для дополнительной информации смотрите раздел "Комментарии". Для стандартных типов ресурсов этот параметр может принимать одно из следующих значений:

Значение Пояснение
RT_ACCELERATOR Таблица акселераторов.
RT_ANICURSOR Анимированный курсор.
RT_ANIICON Анимированная иконка.
RT_BITMAP Битовое изображение.
RT_CURSOR Зависимый от аппаратного обеспечения курсор.
RT_DIALOG Диалоговое окно.
RT_FONT Шрифт .
RT_FONTDIR Таблица шрифтов .
RT_GROUP_CURSOR Независимый от аппаратного обеспечения курсор.
RT_GROUP_ICON Независимая от аппаратного обеспечения иконка.
RT_ICON Зависимая от аппаратного обеспечения иконка.
RT_MENU Меню .
RT_MESSAGETABLE Элемент таблицы сообщений.
RT_RCDATA Определяемые приложением ресурсы.
RT_STRING Элемент таблицы строк.
RT_VERSION Информация о версии.

wLanguage - определяет язык ресурса. Если значение этого параметра равно MAKELANGID ( LANG_NEUTRAL, SUBLANG_NEUTRAL ), используется текущий язык, ассоциированный с вызывающим потоком.

Для указания языка, отличного от текущего, используйте макрос MAKELANGID .

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

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

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

Комментарии

Если старшее слово значения параметра lpName или lpType равно нулю, младшее слово определяет целочисленный идентификатор имени или типа указанного ресурса. В противном случае, оба значения этих параметров представляют собой длинные указатели на завершающиеся нулем строки. Если первый символ строки равен '#', оставшиеся символы представляют собой десятичное число, которое определяет целочисленный идентификатор имени или типа ресурса. Например, строка "#258" представляет собой целочисленный идентификатор 258.

Приложение может уменьшить количество памяти, необходимое ресурсу, обращаясь к нему по целочисленному идентификатору вместо имени.

Приложение может использовать FindResourceEx для поиска ресурса любого типа, но эта функция должна быть использована только в том случае, если приложение должно иметь доступ к двоичным данным ресурсов, когда оно впоследствии вызывает функции LoadLibrary и LockResource .

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

Функция Действие
FormatMessage Загружает и форматирует элемент таблицы сообщений.
LoadAccelerators Загружает таблицу акселераторов.
LoadBitmap Загружает битовое изображение.
LoadCursor Загружает курсор.
LoadIcon Загружает иконку.
LoadMenu Загружает меню.
LoadString Загружает элемент таблицы строк.

Например, приложение должно использовать функцию LoadIcon для загрузки иконки для ее отображения на экране. Тем не менее, приложение должно использовать функции FindResource и LoadResource , если оно загружает иконку для копирования ее данных в другое приложение.

См . также

FindResource, FormatMessage, LoadAccelerators, LoadBitmap, LoadCursor, LoadIcon, LoadMenu, LoadResource, LoadString, LockResource, SizeofResource .

 

Пространство имен оболочки

 

BrowseCallbackProc

Функция BrowseCallbackProc представляет собой определяемую приложением функцию обратного вызова, используемую совместно с функцией SHBrowseForFolder . Диалоговое окно выбора папки вызывает эту функцию для уведомления о событиях. Тип BFFCALLBACK определяет указатель на эту функцию обратного вызова.

int BrowseCallbackProc (

HWND hwnd ,

UINT uMsg ,

LPARAM lParam ,

LPARAM lpData

);

Параметры

hwnd - дескриптор диалогового окна. Функция обратного вызова может отправлять окну следующие сообщения:

BFFM_ENABLEOK Разрешает кнопку ОК, если значение параметра wParam не равно нулю. В противном случае запрещает кнопку ОК.
BFFM_SETSELECTION Выбирает указанную папку. Значение lParam представляет собой PIDL выбираемой папки, если значение wParam равно FALSE, или путь папки в противном случае.
BFFM _ SETSTATUSTEXT Устанавливает текст состояния в завершающуюся нулем строку, определенную значением параметра lParam .

uMsg - идентифицирует событие. Может принимать одно из следующих значений:

BFFM_INITIALIZED Диалоговое окно завершило инициализацию. Значение параметра lpData равно NULL .
BFFM_SELCHANGED Изменился выбор в диалоговом окне. lpData представляет собой указатель на список идентификаторов элемента для выбранной папки.

lParam - зависящее от сообщения значение.

lpData - определяемое приложением значение, которое было указано в члене lParam структуры типа BROWSEINFO .

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

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

См. также

BROWSEINFO .

 

SHAddToRecentDocs

Добавляет документ в список недавно использовавшихся документов или очищает список. Пользователь может получить доступ к списку через меню Пуск ( Start ) панели задач Windows .

WINSHELLAPI void WINAPI SHAddToRecentDocs (

UINT uFlags ,

LPCVOID pv

);

Параметры

uFlags - флаг, определяющий значение параметра pv . Может принимать одно из следующих значений:

SHARD_PATH - pv является адресом строки, содержащей путь и имя файла;

SHARD_PIDL - pv является адресом списка идентификаторов элемента.

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

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

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

 

SHBrowseForFolder

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

WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder (

LPBROWSEINFO lpbi

);

Параметры

lpbi - указатель на структуру типа BROWSEINFO , которая содержит информацию, используемую для отображения диалогового окна.

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

Возвращается указатель на список идентификаторов элементов, который определяет местоположение выбранной папки относительно корня пространства имен. Если пользователь в диалоговом окне нажал клавишу Cancel, возвращается NULL .

Вызывающее приложение ответственно за освобождение возвращаемого списка идентификаторов.

См. также

BROWSEINFO.

 

SHFileOperation

Выполняет операцию копирования, перемещения, переименования или удаления над объектом файловой системы.

WINSHELLAPI int WINAPI SHFileOperation (

LPSHFILEOPSTRUCT lpFileOp

);

Параметры

lpFileOp - указатель на структуру типа SHFILEOPSTRUCT , содержащую информацию, необходимую функции для выполнения операции.

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

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

См. также

SHFILEOPSTRUCT.

 

SHFreeNameMappings

Освобождает объект отображения имени файла (filename mapping object), извлекаемый функцией SHFileOperation .

WINSHELLAPI void WINAPI SHFreeNameMappings (

HANDLE hNameMappings

);

Параметры

hNameMappings - дескриптор освобождаемого объекта отображения имени файла.

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

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

 

SHGetDesktopFolder

Функция SHGetDesktopFolder возвращает интерфейс IShellFolder для папки рабочего стола, которая является корнем пространства имен пользовательского интерфейса ( shell ).

WINSHELLAPI HRESULT WINAPI SHGetDesktopFolder (

LPSHELLFOLDER *ppshf

);

Параметры

ppshf - адрес, получающий указатель на интерфейс IShellFolder для папки рабочего стола. Вызывающее приложение ответственно за освобождение интерфейса вызовом метода Release .

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

В случае успеха возвращает NOERROR или OLE -определенную ошибку в противном случае.

См. также

IShellFolder .

 

SHGetInstanceExplorer

Функция SHGetInstanceExplorer извлекает адрес интерфейса IUnknown Explorer'а ( Проводника ).

WINSHELLAPI HRESULT WINAPI SHGetInstanceExplorer (

IUnknown * ppunk

);

Параметры

ppunk - указатель на переменную, получающую адрес интерфейса IUnknown Explorer 'а.

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

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

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

 

SHGetMalloc

Функция SHGetMalloc извлекает указатель на интерфейс IMalloc оболочки. Расширение оболочки должно использовать этот интерфейс для выделения памяти, позднее освобождаемой оболочкой.

HRESULT SHGetMalloc (

LPMALLOC * ppMalloc

);

Параметры

ppMalloc - адрес переменной, которая получает адрес интерфейса IMalloc оболочки.

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

В случае успеха возвращается NOERROR или E _ FAIL в противном случае.

 

SHLoadInProc

Функция SHLoadInProc создает экземпляр указанного класса объекта внутри контекста процесса пользовательского интерфейса.

WINSHELLAPI HRESULT WINAPI SHLoadInProc (

REFCLSID rclsid

);

Параметры

rclsid - CLSID класса объекта, экземпляр которого создается.

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

В случае успеха возвращает NOERROR или OLE -определенную ошибку в противном случае.

 

Контекст устройства

 

CancelDC

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

BOOL CancelDC (

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

);

Параметры

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

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

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

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

Комментарии

Функция CancelDC используется многопоточными приложениями для отмены протяженных во времени операций рисования. Если поток A инициирует такую операцию рисования, поток В может ее отменить, вызвав эту функцию.

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

См. также

CreateThread, GetCurrentThread .

 

CreateCompatibleDC

Функция CreateCompatibleDC создает контекст устройства в памяти, совместимый с указанный контекстом.

HDC CreateCompatibleDC (

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

);

Параметры

hdc - идентифицирует контекст устройства. Если значение этого параметра равно NULL, функция создает контекст устройства в памяти, совместимый с текущим экраном приложения.

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

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

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

Комментарии

Перед тем, как приложение сможет использовать контекст устройства в памяти для операций рисования, оно должно выбрать в контекст устройства битовый образ с корректной шириной и высотой. Как только битовый образ выбран, контекст устройства может быть использован для подготовки изображений, которые будут скопированы на экран или принтер.

Функция CreateCompatibleDC может быть использована только с теми устройствами, которые поддерживают растровые операции. Приложение может узнать о поддержке этих операций, вызвав функцию GetDeviceCaps .

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

См. также

CreateCompatibleBitmap, DeleteDC, GetDeviceCaps .

 

DeleteDC

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

BOOL DeleteDC (

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

);

Параметры

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

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

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

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

Комментарии

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

См. также

CreateDC, GetDC, ReleaseDC .

 

EnumObjects

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

int EnumObjects (

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

int nObjectType , // идентификатор типа объекта

GOBJENUMPROC lpObjectFunc , // указатель на функцию обратного вызова

LPARAM lParam // указатель на предоставляемые приложением данные

);

Параметры

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

nObjectType - определяет тип объекта. Может принимать значение OBJ_BRUSH или OBJ_PEN .

lpObjectFunc - указатель на определяемую приложением функцию обратного вызова. Для дополнительной информации об этой функции смотрите описание функции EnumObjectsProc .

lParam - указывает на определяемые приложением данные. Данные передаются в функцию обратного вызова вместе с информацией об объекте.

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

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

См. также

EnumObjectsProc, GetObject .

 

GetDC

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

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

HDC GetDC (

HWND hWnd // дескриптор окна

);

Параметры

hWnd - идентифицирует окно, чей контекст устройства извлекается.

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

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

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

Комментарии

После рисования с общим контекстом устройства должна быть вызвана функция ReleaseDC для освобождения контекста устройства. Классовые и частные контексты устройства не должны освобождаться. Количество контекстов устройства ограничено только объемом доступной памяти.

См. также

ReleaseDC, GetWindowDC .

 

ResetDC

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

HDC ResetDC (

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

CONST DEVMODE * lpInitData // адрес структуры с информацией

// о контексте устройства

);

Параметры

hdc - идентифицирует контекст устройства, подлежащий обновлению.

lpInitData - указывает на структуру типа DEVMODE , содержащую информацию о новом контексте устройства.

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

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

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

Комментарии

Приложение обычно использует функцию ResetDC при получении сообщения WM _ DEVMODECHANGE. ResetDC также может быть использована для изменения ориентации бумаги или полей бумаги при печати документа. Функция ResetDC не может быть использована для изменения имени драйвера устройства, имени устройства или выходного порта. Когда пользователь изменяет соединение с портом или имя устройства, приложение должно удалить исходный контекст устройства и создать новый контекст с новой информацией.

См. также

DeviceCapabilities, DEVMODE, Escape .

 

Стандартные диалоговые окна

 

ChooseColor

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

BOOL ChooseColor (

LPCHOOSECOLOR lpcc // указатель на структуру с инициализирующими данными

);

Параметры

lpcc - указатель на структуру типа CHOOSECOLOR , которая содержит информацию, используемую для инициализации диалогового окна. Когда ChooseColor возвращает управление, структура содержит информацию о выбранном пользователем цвете.

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

Если пользователь нажимает кнопку ОК в диалоговом окне, возвращается ненулевое значение. Член rgbResult структуру типа CHOOSECOLOR содержит RGB значение цвета, выбранного пользователем.

Если пользователь нажал кнопку Cancel, или закрыл диалоговое окно, или произошла ошибка - возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию CommDlgExtendedError , которая может вернуть одно из следующих значений:

CDERR_FINDRESFAILURE

CDERR_MEMLOCKFAILURE

CDERR_INITIALIZATION

CDERR_NOHINSTANCE

CDERR_LOCKRESFAILURE

CDERR_NOHOOK

CDERR_LOADRESFAILURE

CDERR_NOTEMPLATE

CDERR_LOADSTRFAILURE

CDERR_STRUCTSIZE

CDERR_MEMALLOCFAILURE

Комментарии

Стандартное диалоговое окно выбора цвета не поддерживает палитр. Выбор цветов, предлагаемых диалоговым окном, ограничен системными цветами и прореженными (dithered) версиями тех цветов.

Вы можете предоставить функцию-ловушку (hook procedure) CCHookProc для диалогового окна. Функция-ловушка может обрабатывать сообщения, отправляемые диалоговому окну. Для использования функции установите флаг CC_ENABLEHOOK в члене Flags структуры типа CHOOSECOLOR и укажите адрес функции в члене lpfnHook .

См . также

CCHookProc, CHOOSECOLOR, CommDlgExtendedError .

 

ChooseFont

Функция ChooseFont создает стандартное диалоговое окно выбора шрифта, которое позволяет пользователю выбрать атрибуты для логического шрифта. Эти атрибуты включают в себя имя гарнитуры шрифта, стиль (жирный, наклонный или нормальный), размер, эффекты (подчеркивание, зачеркивание и цвет текста) и написание символов (или набор символов).

BOOL ChooseFont (

LPCHOOSEFONT lpcf // указатель на структуру с инициализирующими данными

);

Параметры

lpcf - указывает на структуру типа CHOOSEFONT , которая содержит информацию, используемую для инициализации диалогового окна. Когда ChooseFont возвращает управление, структура содержит информацию о выбранном пользователем шрифте.

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

Если пользователь нажимает кнопку ОК в диалоговом окне, возвращается ненулевое значение. Члены структуры типа CHOOSEFONT показывают выбор пользователя.

Если пользователь нажал кнопку Cancel, или закрыл диалоговое окно, или произошла ошибка - возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию CommDlgExtendedError , которая может вернуть одно из следующих значений:

CDERR_FINDRESFAILURE

CDERR_NOHINSTANCE

CDERR_INITIALIZATION

CDERR_NOHOOK

CDERR_LOCKRESFAILURE

CDERR_NOTEMPLATE

CDERR_LOADRESFAILURE

CDERR_STRUCTSIZE

CDERR_LOADSTRFAILURE

CFERR_MAXLESSTHANMIN

CDERR_MEMALLOCFAILURE

CFERR_NOFONTS

CDERR_MEMLOCKFAILURE

Комментарии

Вы можете предоставить функцию-ловушку (hook procedure) CCHookProc для диалогового окна. Функция-ловушка может обрабатывать сообщения, отправляемые диалоговому окну. Для использования функции установите флаг CC_ENABLEHOOK в члене Flags структуры типа CHOOSEFONT и укажите адрес функции в члене lpfnHook .

Функция-ловушка может отправлять диалоговому окну сообщения WM _ CHOOSEFONT _ GETLOGFONT, WM _ CHOOSEFONT _ SETFLAGS и WM _ CHOOSEFONT _ SETLOGFONT для получения и установки текущих значений флагов в диалоговом окне.

См. также

CFHookProc, CHOOSEFONT, CommDlgExtendedError, LOGFONT , WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETFLAGS, WM_CHOOSEFONT_SETLOGFONT.

 

Иконки

 

CopyIcon

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

HICON CopyIcon (

HICON hIcon // дескриптор копируемой иконки

);

Параметры

hIcon - идентифицирует копируемую иконку.

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

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

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

Комментарии

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

См . также

CopyCursor, DrawIcon, DrawIconEx.

 

CreateIcon

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

HICON CreateIcon (

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

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

int nHeight , // высота иконки

BYTE cPlanes , // число плоскостей в битовой маске исключающее ИЛИ

BYTE cBitsPixel , // число бит на пиксель

// в битовой маске исключающее ИЛИ

CONST BYTE * lpbANDbits , // указатель на массив битовой маски И

CONST BYTE * lpbXORbits // указатель на массив битовой маски ИЛИ

);

Параметры

hInstance - идентифицирует экземпляр модуля, создающего иконку.

nWidth - определяет ширину иконки в пикселях.

nHeight - определяет высоту иконки в пикселях.

cPlanes - определяет число плоскостей в битовой маске исключающее ИЛИ иконки.

cBitsPixel - определяет число бит на пиксель в битовой маске исключающее ИЛИ иконки.

lpbANDbits - указатель на массив байт, который содержит битовые значения для маски И иконки. Такая битовая маска описывает монохромное изображение.

lpbXORbits - указатель на массив байт, который содержит битовые значения для маски исключающее ИЛИ иконки. Такая битовая маска описывает зависимое от устройства цветное изображение.

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

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

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

Комментарии

Значения параметров nWidth и nHeight должны указывать ширину и высоту, поддерживаемые текущим драйвером дисплея, потому что система не может создать иконки других размеров. Для определения того, какие ширина и высота поддерживаются драйвером дисплея, вызовите функцию GetSystemMetrics , указав значения SM _ CXICON и SM _ CYICON .

CreateIcon применяет следующую таблицу истинности для битовых масок.

Битовая маска И Битовая маска исключающее ИЛИ Отображение
0 0 Черное.
0 1 Белое.
1 0 Цвет экрана.
1 1 Обратный цвет экрана.

См. также

GetSystemMetrics .

 

CreateIconFromResource

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

HICON CreateIconFromResource (

PBYTE presbits , // указатель на биты ресурса

DWORD dwResSize , // число бит в буфере

BOOL fIcon , // флаг иконки или курсора

DWORD dwVer // версия формата Windows

);

Параметры

presbits - указывает на буфер, содержащий биты ресурса иконки или курсора. Эти биты обычно загружаются вызовами функций LookupIconIdFromDirectory (в Windows 95 вы также можете использовать функцию LookupIconIdFromDirectoryEx ) и LoadResource .

dwResSize - определяет размер, в байтах, набора битов, на который указывает параметр presbits .

fIcon - определяет, будет ли создаваться иконка или курсор. Если значение этого параметра равно TRUE, создается иконка. Иначе создается курсор.

dwVer - определяет номер версии формата иконки или курсора для битов ресурса, на которые указывает параметр presbits . Параметр может принимать одно из следующих значений:

Формат Значение
Windows 2. x 0x00020000
Windows 3.x 0x00030000

Все Win 32 приложения должны использовать для иконок и курсоров формат Windows 3. x .

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

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

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

Комментарии

Функции CreateIconFromResource, CreateIconIndirect, GetIconInfo и LookupIconIdFromDirectory (в Windows 95 также функции CreateIconFromResourceEx и LookupIconIdFromDirectoryEx ) позволяют приложениям оболочки и браузерам иконок проверять и использовать ресурсы всей системы.

См. также

CreateIconFromResourceEx, CreateIconIndirect, GetIconInfo, LoadResource, LookupIconIdFromDirectory, LookupIconIdFromDirectoryEx .

 

CreateIconFromResourceEx

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

HICON CreateIconFromResourceEx (

PBYTE pbIconBits , // указатель на биты ресурса

DWORD cbIconBits , // число бит в буфере

BOOL fIcon , // флаг иконки или курсора

DWORD dwVersion , // версия формата Windows

int cxDesired , // желаемая ширина иконки или курсора

int cyDesired , // желаемая высота иконки или курсора

UINT uFlags

);

Параметры

pbIconBits - указывает на буфер, содержащий биты ресурса иконки или курсора. Эти биты обычно загружаются вызовами функций LookupIconIdFromDirectory (в Windows 95 вы также можете использовать функцию LookupIconIdFromDirectoryEx ) и LoadResource .

cbIconBits - определяет размер, в байтах, набора битов, на который указывает параметр pbIconBits .

fIcon - определяет, будет ли создаваться иконка или курсор. Если значение этого параметра равно TRUE, создается иконка. Иначе создается курсор.

dwVersion - определяет номер версии формата иконки или курсора для битов ресурса, на которые указывает параметр pbIconBits . Параметр может принимать одно из следующих значений:

Формат Значение
Windows 2. x 0x00020000
Windows 3.x 0x00030000

Все Win 32 приложения должны использовать для иконок и курсоров формат Windows 3. x .

cxDesired - определяет желаемую ширину иконки или курсора в пикселях. Если значение этого параметра равно нулю, функция использует значения метрики системы SM _ CXICON или SM _ CXCURSOR для установки ширины.

cyDesired - определяет желаемую высоту иконки или курсора в пикселях. Если значение этого параметра равно нулю, функция использует значения метрики системы SM _ CXICON или SM _ CXCURSOR для установки высоты.

uFlags - определяет комбинацию из следующих значений:

Значение Пояснение
LR _ DEFAULTCOLOR Используется цветовой формат по умолчанию.
LR _ MONOCHROME Создается монохромная иконка или курсор.

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

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

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

Комментарии

Функции CreateIconFromResourceEx, CreateIconFromResource , CreateIconIndirect, GetIconInfo и LookupIconIdFromDirectoryEx позволяют приложениям оболочки и браузерам иконок проверять и использовать ресурсы всей системы.

См. также

BITMAPINFOHEADER, CreateIconFromResource, CreateIconIndirect, GetIconInfo, LoadResource, LookupIconIdFromDirectoryEx .

 

CreateIconIndirect

Функция CreateIconIndirect создает иконку или курсор по информации из структуры типа ICONINFO .

HICON CreateIconIndirect (

PICONINFO piconinfo // указатель на структуру с

// информацией об иконке

);

Параметры

piconinfo - указывает на структуру типа ICONINFO , которую функция использует для создания иконки или курсора.

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

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

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

Комментарии

Система копирует битовые образы в структуру типа ICONINFO перед созданием иконки или курсора. Приложение должно продолжать управлять исходными битовыми образами и удалить их при отсутствии в них дальнейшей необходимости.

Когда вы закончили использовать иконку, вызовите функцию DestroyIcon .

См . также

DestroyIcon, ICONINFO .

 

GetIconInfo

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

BOOL GetIconInfo (

HICON hIcon , дескриптор иконки

PICONINFO piconinfo // адрес структуры иконки

);

Параметры

hIcon - идентифицирует иконку или курсор. Для извлечения информации о стандартной иконке или курсоре, укажите одно из следующих значений:

Значение Описание
IDC _ ARROW Обычный курсор-стрелка.
IDC _ IBEAM Курсор в виде буквы " I ".
IDC _ WAIT Курсор "большие песочные часы".
IDC _ CROSS Курсор-перекрестие.
IDC _ UPARROW Курсор "стрелка вверх".
IDC _ SIZE Только Windows NT : четырехконечная стрелка
IDC _ ICON Только Windows NT : пустая иконка.
IDC _ SIZENWSE Курсор изменения размера. Ориентирован с северо-запада на юго-восток.
IDC _ SIZENESW Курсор изменения размера. Ориентирован с северо-востока на юго-запад.
IDC _ SIZEWE Горизонтальный курсор изменения размера.
IDC _ SIZENS Вертикальный курсор изменения размера.
IDC _ SIZEALL Курсор изменения всех размеров. То же, что и IDC _ SIZE.
IDC _ NO Перечеркнутый наискосок круг.
IDC _ APPSTARTING Курсор "маленькие песочные часы со стрелкой".
IDI _ APPLICATION Иконка приложения по умолчанию.
IDI _ ASTERISK Звездочка (используется в информационных сообщениях).
IDI _ EXCLAMATION Восклицательный знак (используется в предупредительных сообщениях).
IDI _ HAND Иконка, имеющая форму руки (используется в серьезных предупредительных сообщениях).
IDI _ QUESTION Вопросительный знак (используется в вопросительных сообщениях).
IDI_WINLOGO Лого Windows.

piconinfo - указывает на структуру типа ICONINFO . Функция заполняет члены структуры.

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

В случае успеха возвращается ненулевое значение, и функция заполняет члены структуры типа ICONINFO .

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

Комментарии

GetIconInfo создает битовые изображения для членов hbmMask и hbmColor структуры типа ICONINFO . Вызывающее приложение должно управлять этими изображениями и удалять их, когда в них отпадает необходимость.

См. также

CreateIcon, CreateIconFromResource, CreateIconIndirect, DestroyIcon, DrawIcon, DrawIconEx, ICONINFO, LoadIcon, LookupIconIdFromDirectory .

 

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

 

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 .

 

Сообщения и очереди сообщений

 

GetQueueStatus

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

DWORD GetQueueStatus (

UINT flags // флаги состояния очереди

);

Параметры

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

Значение Пояснение
QS_ALLEVENTS Сообщение ввода, WM_TIMER, WM_PAINT, WM_HOTKEY или помещенное в очередь сообщение.
QS_ALLINPUT Любое сообщение ввода.
QS_HOTKEY Сообщение WM_HOTKEY .
QS_INPUT Сообщение ввода.
QS_KEY Сообщение WM_KEYUP, WM_KEYDOWN, WM_SYSKEYUP или WM_SYSKEYDOWN в очереди.
QS_MOUSE Сообщение WM_MOUSEMOVE или сообщение клавиши мыши ( WM_LBUTTONUP, WM_RBUTTONDOWN и т. п.).
QS_MOUSEBUTTON Сообщение клавиши мыши ( WM_LBUTTONUP, WM_RBUTTONDOWN и т. п.).
QS_MOUSEMOVE Сообщение WM_MOUSEMOVE.
QS_PAINT Сообщение WM_PAINT .
QS_OSTMESSAGE Помещенное сообщение, отличное от перечисленных выше, находится в очереди.
QS_ENDMESSAGE Сообщение, отправленное другим потоком или приложением, находится в очереди.
QS_TIMER Сообщение WM_TIMER .

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

Старшее слово показывает типы сообщений, находящихся в очереди. Младшее слово показывает типы сообщений, которые были добавлены в очередь и все еще там находятся с момента последнего вызова функции GetQueueStatus : GetMessage или PeekMessage .

Комментарии

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

См. также

GetInputState, GetMessage, PeekMessage .

 

Кисти

 

CreatePatternBrush

Функция CreatePatternBrush создает логическую кисть с указанным шаблоном в виде битового изображения. Битовое изображение не может быть независимым от оборудования битовым изображением ( DIB ), которое создано функцией CreateDIBSection .

HBRUSH CreatePatternBrush (

HBITMAP hbmp // дескриптор битового изображения

);

Параметры

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

Windows 95: Создание кистей из битовых образов размером более 8 x 8 пикселей не поддерживается. Если указан битовый образ большего размера, используется его часть.

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

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

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

Комментарии

Шаблонная кисть - это битовый образ, который Windows использует для рисования внутренних частей закрашенных фигур.

После того, как приложение создало кисть, вызвав функцию CreatePatternBrush , оно может выбрать эту кисть в любой контекст устройства при помощи функции SelectObject .

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

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

Битовое изображение, идентифицируемое значением параметра hbmp , не может быть независимым от оборудования битовым изображением ( DIB ), которое создано функцией CreateDIBSection . Если оно является независимым от оборудования битовым изображением, то вызов CreatePatternBrush завершается неудачей.

См. также

CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateDIBSection, CreateHatchBrush, DeleteObject, GetBrushOrgEx, LoadBitmap, SelectObject, SetBrushOrgEx .

 

Библиотека оболочки

 

DragAcceptFiles

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

VOID DragAcceptFiles (

HWND hWnd , // дескриптор окна

BOOL fAccept // опция разрешения принятия файлов

);

Параметры

hWnd - идентифицирует окно, регистрируемое, если оно принимает перетаскиваемые на него файлы.

fAccept - определяет, принимает ли окно, определенное параметром hWnd , перетаскиваемые на него файлы. Значение TRUE разрешает принятие файлов, значение FALSE его запрещает.

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

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

Комментарии

Приложение, вызывающее DragAcceptFiles со значением TRUE параметра fAccept идентифицирует себя как способное обрабатывать сообщение WM_DROPFILES от диспетчера файлов.

См . также

WM_DROPFILES.

 

DragFinish

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

VOID DragFinish (

HDROP hDrop // дескриптор освобождаемой памяти

);

Параметры

hDrop - идентифицирует структуру, описывающую перемещенные мышью файлы. Этот дескриптор извлекается из параметра wParam сообщения WM_DROPFILES.

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

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

См . также

WM_DROPFILES.

 

DragQueryFile

Функция DragQueryFile извлекает имена перемещенных мышью файлов.

UINT DragQueryFile (

HDROP hDrop , // дескриптор структуры для перемещенных файлов

UINT iFile , // индекс запрошенного файла

LPTSTR lpszFile , // буфер для имени файла

UINT cch // размер буфера для имени файла

);

Параметры

hDrop - идентифицирует структуру, содержащую имена файлов.

iFile - определяет индекс запрашиваемого файла. Если значение параметра iFile равно 0 xFFFFFFFF, DragQueryFile возвращает число перемещенных файлов. Если значение параметра iFile лежит между нулем и количеством перемещенных файлов, DragQueryFile копирует соответствующее значению им файла в буфер, указанный параметром lpszFile .

lpszFile - указывает на буфер для имени перемещенного файла. Им файла представляет собой завершающуюся нулем строку. Если значение lpszFile равно NULL, DragQueryFile возвращает необходимый размер буфера в символах.

cch - определяет размер буфера в символах.

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

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

Если значение параметра iFile равно 0 xFFFFFFFF, то возвращается число перемещенных мышью файлов.

Если значение параметра iFile лежит между нулем и количеством перемещенных файлов, и значение параметра lpszFile равно NULL, возвращается требуемый размер буфера, в символах, без учета завершающего нулевого символа.

См . также

DragQueryPoint .

 

DragQueryPoint

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

BOOL DragQueryPoint (

HDROP hDrop , // дескриптор структуры для перемещенных файлов

LPPOINT lppt // указатель на структуру для координат мыши

);

Параметры

hDrop - идентифицирует структуру, описывающую перемещенные мышью файлы.

lppt - указывает на структуру POINT , которую функция заполняет координатами мыши в тот момент, когда при перетаскивании файлов была отпущена левая кнопка мыши.

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

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

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

Комментарии

Координаты курсора мыши возвращаются для окна, получающего сообщение WM _ DROPFILES .

См. также

DragQueryFile, POINT , WM_DROPFILES.

 

FindExecutable

Функция FindExecutable возвращает имя и дескриптор исполняемого (.ЕХЕ) файла, ассоциированного с указанным файлом.

HINSTANCE FindExecutable (

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

LPCTSTR lpDirectory , // указатель на строку с директорией по

// умолчанию

LPTSTR lpResult // указатель на буфер для строки с именем

// возвращаемого .ЕХЕ файла

);

Параметры

lpFile - указатель на завершающуюся нулем строку, определяющую имя файла. Файл может быть либо документом, либо исполняемым файлом.

lpDirectory - указатель на завершающуюся нулем строку, определяющую директорию по умолчанию.

lpResult - указатель на буфер для имени возвращаемого функцией файла. Имя файла представляет собой завершающуюся нулем строку, определяющую исполняемый файл, который запускается при открытии файла, заданного параметром lpFile .

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

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

Значение Пояснение
0 Недостаток памяти или ресурсов.
31 Отсутствует ассоциация для данного типа файлов.
ERROR_FILE_NOT_FOUND Указанный файл не найден.
ERROR_PATH_NOT_FOUND Указанный путь не найден.
ERROR_BAD_FORMAT Неверный формат .ЕХЕ файла (не Win32 .EXE или поврежденный файл)

Комментарии

При возвращении параметр lpResult может содержать путь к серверу DDE, запускаемому, если не получен ответ на запрос инициации DDE-диалога.

См . также

ShellExecute .

 

Заполненные фигуры

 

FrameRect

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

int FrameRect (

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

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

HBRUSH hbr // дескриптор кисти

);

Параметры

hDC - идентифицирует контекст устройства, в котором будет нарисована граница.

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

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

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

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

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

Комментарии

Кисть, идентифицируемая параметром hbr , должна быть создана с использованием функций CreateHatchBrush, CreatePatternBrush или CreateSolidBrush , или извлечена с использованием функции GetStockObject .

Если член bottom структуры типа RECT меньше или равен члену top , или член right меньше или равен члену left , то функция не рисует прямоугольник.

См. также

CreateHatchBrush, CreatePatternBrush, CreateSolidBrush, GetStockObject, RECT .

 

Класс окна

 

GetClassName

Функция GetClassName извлекает имя класса, к которому принадлежит заданное окно.

int GetClassName (

HWND hWnd , // дескриптор окна

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

int nMaxCount // размер буфера, в символах

);

Параметры

hWnd - идентифицирует окно и, неявно, класс, к которому оно принадлежит.

lpClassName - указывает на буфер, который получает строку с именем класса.

nMaxCount - определяет размер буфера, указанного параметром lpClassName , в символах. Строка с именем класса усекается, если ее длина больше размера буфера.

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

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

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

См. также

FindWindow, GetClassInfo, GetClassLong, GetClassWord .

 

SetClassWord

Функция SetClassWord замещает 16-битное ( word ) значение в указанном смещении в дополнительной памяти класса для класса окна, которому принадлежит указанное окно.

WORD SetClassWord (

HWND hWnd , // дескриптор окна

int nIndex , // индекс заменяемого значения

WORD wNewWord // новое значение

);

Параметры

hWnd - идентифицирует окно, и, неявно, класс, к которому принадлежит окно.

nIndex - определяет отсчитываемое от нуля смещение замещаемого значения в байтах. Верные значения находятся в диапазоне от нуля до числа байт в памяти класса минус два. Например, если вы задали десять или более байт дополнительной памяти класса, восемь будет индексом пятого 16-битного значения.

wNewWord - определяет новое значение.

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

В случае успеха возвращается предыдущее значение 16-битного целого.

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

Комментарии

Зарезервируйте дополнительную память класса указанием ненулевого значения члена cbClsExtra структуры типа WNDCLASS , используемой с функцией RegisterClass .

Значения GCW _ в Win 32 API устарели. Вы должны использовать функцию SetClassLong для устновки значений класса, ранее устанавливаемых с использованием значений GCW _ функцией SetClassWord .

См. также

GetClassLong, GetClassWord, RegisterClass, SetClassLong, WNDCLASS .

 

UnregisterClass

Функция UnregisterClass удаляет класс окна, освобождая память, требуемую классу.

BOOL UnregisterClass (

LPCTSTR lpClassName , // адрес строки с именем класса

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

);

Параметры

lpClassName - указывает на завершающуюся нулем строку или целый атом. Если значение этого параметра является целым атомом, он должен быть глобальным атомом, созданным предыдущим вызовом функции GlobalAddAtom . Атом, 16-битное значение, меньшее 0 xC 000, должен находиться в младшем слове lpClassName ; старшее слово должно быть равно нулю.

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

hInstance - определяет экземпляр модуля, создавшего класс.

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

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

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

Комментарии

Перед вызовом этой функции приложение должно разрушить все окна, созданные с указанным классом.

Регистрация всех классов окон, которые зарегистрировало приложение, должна быть отменена при его завершении.

См. также

GlobalAddAtom, RegisterClass .

 

Ввод мышью

 

GetDoubleClickTime

Функция GetDoubleClickTime извлекает текущее время двойного щелчка мыши. Двойной щелчок - это серия двух щелчков клавиши мыши; второй щелчок происходит в течение заданного времени после первого. Время двойного щелчка - это максимальное число миллисекунд, которые могут пройти между первым и вторым щелчками в двойном щелчке.

UINT GetDoubleClickTime ( VOID )

Параметры

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

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

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

См. также

SetDoubleClickTime .

 

Прямые и кривые

 

GetArcDirection

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

int GetArcDirection (

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

);

Параметры

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

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

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

Значение Пояснение
AD_COUNTERCLOCKWISE Дуги и прямоугольники рисуются против часовой стрелки.
AD_CLOCKWISE Дуги и прямоугольники рисуются по часовой стрелке.

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

См. также

SetArcDirection .

 

LineDDAProc

Функция LineDDAProc является определяемой приложением функцией обратного вызова, используемой совместно с функцией LineDDA. Функция LineDDAProc используется для обработки координат. Тип LINEDDAPROC определяет указатель на эту функцию обратного вызова. LineDDAProc является "заполнителем" для имени определяемой приложением функции.

VOID CALLBACK LineDDAProc (

int X , // x -координата точки

int Y , // у-координата точки

LPARAM lpData // определяемые приложением данные

);

Параметры

X - определяет х-координату текущей точки в логических единицах.

Y - определяет y -координату текущей точки в логических единицах.

lpData - указатель на определяемые приложением данные.

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

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

Комментарии

Приложение регистрирует функцию LineDDAProc , передавая ее адрес в функцию LineDDA.

Требования

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

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

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

См. также

LineDDA.

 

LineTo

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

BOOL LineTo (

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

int nXEnd , // x -координата завершающей линию точки

int nYEnd // y - координата завершающей линию точки

);

Параметры

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

nXEnd - определяет x -координату завершающей линию точки.

nYEnd - определяет y -координату завершающей линию точки.

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

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

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

Комментарии

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

Линия рисуется текущим пером, и, если перо является геометрическим пером, текущей кистью.

В случае успеха LineTo , текущая позиция устанавливается в указанную завершающую точку.

См. также

MoveToEx, Polyline, PolylineTo .

 

MoveToEx

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

BOOL MoveToEx (

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

int X , // x -координата новой текущей позиции

int Y , // y - координата новой текущей позиции

LPPOINT lpPoint // адрес старой текущей позиции

);

Параметры

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

X - определяет x -координату новой текущей позиции в логических единицах.

Y - определяет y -координату новой текущей позиции в логических единицах.

lpPoint - указывает на структуру типа POINT , в которой хранится предыдущая текущая позиция. Если значение этого параметра равно NULL, предыдущая позиция не возвращается.

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

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

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

Комментарии

Функция MoveToEx воздействует на все функции рисования.

См. также

AngleArc, LineTo, POINT, PolyBezierTo, PolylineTo .

 

Polyline

Функция Polyline рисует серию отрезков прямых, соединяя точки в указанном массиве.

BOOL Polyline (

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

CONST POINT * lppt , // адрес массива с точками

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

);

Параметры

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

lppt - указатель на массив структур типа POINT . Каждая структура в массиве идентифицирует точку в логическом пространстве.

cPoints - определяет количество точек в массиве. Значение этого параметра должно быть больше или равно двум.

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

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

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

Комментарии

Линии рисуются текущим пером с первой точки через последующие. В отличие от функции LineTo , функция Polyline не использует и не обновляет текущую позицию.

См. также

LineTo, MoveToEx, POINT, PolylineTo, PolyPolyline .

 

PolylineTo

Функция PolylineTo рисует серию отрезков прямых, соединяя точки в указанном массиве.

BOOL PolylineTo (

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

CONST POINT * lppt , // адрес массива с точками

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

);

Параметры

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

lppt - указатель на массив структур типа POINT . Каждая структура в массиве идентифицирует точку в логическом пространстве.

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

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

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

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

Комментарии

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

PolylineTo перемешает текущую позицию в завершающую точку последнего отрезка.

Если отрезки прямых, нарисованные функцией, образуют замкнутую фигуру, то она не закрашивается.

См. также

LineTo, MoveToEx, POINT, Polyline .

 

PolyPolyline

Функция PolyPolyline рисует множественные серии соединенных отрезков прямых.

BOOL PolyPolyline (

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

CONST POINT * lppt , // адрес массива с точками

CONST DWORD * lpdwPolyPoints , // адрес массива значений

DWORD cCount // число элементов во втором массиве

);

Параметры

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

lppt - указатель на массив структур типа POINT . Каждая структура в массиве идентифицирует точку в логическом пространстве.

lpdwPolyPoints - указывает на массив переменных, определяющих число точек в массиве lppt для соответствующей полилинии. Значение каждого элемента должно быть больше или равно двум.

cCount - определяет количество элементов в массиве lpdwPolyPoints .

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

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

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

Комментарии

Отрезки прямых рисуются текущим пером. Фигуры, образованные сегментами, не закрашиваются.

Функция не использует и не обновляет текущую позицию.

См. также

POINT, Polyline, PolylineTo .

 

Отсечение

 

ExcludeClipRect

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

int ExcludeClipRect (

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

int nLeftRect , // x -координата верхнего левого угла прямоугольника

int nTopRect , // y -координата верхнего левого угла прямоугольника

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

int nBottomRect // y -координата нижнего правого угла прямоугольника

);

Параметры

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

nLeftRect - идентифицирует логическую x -координату верхнего левого угла прямоугольника.

nTopRect - идентифицирует логическую y -координату верхнего левого угла прямоугольника.

nRightRect - идентифицирует логическую x -координату нижнего правого угла прямоугольника.

nBottomRect - идентифицирует логическую y -координату нижнего правого угла прямоугольника.

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

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

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

Комментарии

Нижняя и правая грани указанного прямоугольника не исключаются из области отсечения.

См. также

IntersectClipRect .

 

GetClipBox

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

int GetClipBox (

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

LPRECT lprc // адрес структуры с прямоугольником

);

Параметры

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

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

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

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

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

GetClipBox возвращает логические координаты, основанные на текущем контексте устройства.

См. также

RECT .

 

GetClipRgn

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

int GetClipRgn (

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

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

);

Параметры

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

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

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

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

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

Комментарии

Определяемая приложением область отсечения - это область, идентифицируемая функцией SelectClipRgn . Это не область отсечения, созданная вызовом функции BeginPaint .

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

См. также

BeginPaint, SelectClipRgn .

 

GetMetaRgn

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

int GetMetaRgn (

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

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

);

Параметры

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

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

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

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

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

Комментарии

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

Текущая область отсечения контекста устройства определяется пересечением его области отсечения и его метаобласти.

См. также

SetMetaRgn .

 

IntersectClipRect

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

int IntersectClipRect (

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

int nLeftRect , // x -координата верхнего левого угла прямоугольника

int nTopRect , // y -координата верхнего левого угла прямоугольника

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

int nBottomRect // y -координата нижнего правого угла прямоугольника

);

Параметры

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

nLeftRect - идентифицирует логическую x -координату верхнего левого угла прямоугольника.

nTopRect - идентифицирует логическую y -координату верхнего левого угла прямоугольника.

nRightRect - идентифицирует логическую x -координату нижнего правого угла прямоугольника.

nBottomRect - идентифицирует логическую y -координату нижнего правого угла прямоугольника.

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

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

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

Комментарии

Нижняя и правая грани указанного прямоугольника исключаются из области отсечения.

См . также

ExcludeClipRect .

 

OffsetClipRgn

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

int OffsetClipRgn (

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

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

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

);

Параметры

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

nXOffset - определяет количество логических единиц для перемещения влево или вправо.

nYOffset - определяет количество логических единиц для перемещения вверх или вниз.

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

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

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

См. также

SelectClipRgn .

 

SelectClipPath

Функция SelectClipPath выбирает текущий путь ( path ) в качестве области отсечения для контекста устройства, объединяя новую область отсечения с существующей, используя указанный режим.

BOOL SelectClipPath (

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

int iMode // режим отсечения

);

Параметры

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

iMode - определяет способ использования пути. Допустимы следующие значения:

Значение Пояснение
RGN _ AND Новая область отсечения включает пересечение (перекрывающиеся участки) текущей области отсечения и текущего пути.
RGN _ COPY Новой областью отсечения является текущий путь.
RGN _ DIFF Новая область отсечения включает участки текущей области отсечения и участки, исключенные из текущего пути.
RGN _ OR Новая область отсечения представляет собой объединение текущей области отсечения и текущего пути.
RGN _ XOR Новая область отсечения включает в себя объединение текущей области отсечения и текущего пути, но без пересекающихся участков.

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

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

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

ERROR_CAN_NOT_COMPLETE

ERROR_INVALID_PARAMETER

ERROR_NOT_ENOUGH_MEMORY

Комментарии

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

См. также

BeginPath, EndPath .

 

SelectClipRgn

Функция SelectClipRgn выбирает область в качестве текущей области отсечения для указанного контекста устройства.

int SelectClipRgn (

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

HRGN hrgn // дескриптор выбираемой области

);

Параметры

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

hrgn - идентифицирует область, которая выбирается.

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

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

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

Комментарии

Используется только копия выбранной области. Сама область может быть выбрана для любого числа контекстов устройства или может быть удалена.

Функция SelectClipRgn полагает, что координаты для области являются координатами устройства.

Для удаления области отсечения контекста устройства, укажите в качестве дескриптора области NULL .

См. также

ExtSelectClipRgn .

 

SetMetaRgn

Функция SetMetaRgn пересекает текущую область отсечения для указанного контекста устройства с текущей метаобластью и сохраняет объединенную область как новую метаобласть для указанного контекста устройства. Область отсечения сбрасывается в нулевую область.

int SetMetaRgn (

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

);

Параметры

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

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

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

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

Комментарии

Текущая область отсечения контекста устройства определяется пересечением его области отсечения и его метаобласти.

Функция SetMetaRgn должна вызываться только после того, как исходный контекст устройства приложения был сохранен функцией SaveDC .

См. также

GetMetaRgn, SaveDC .

 

Рисование

 

GetWindowRgn

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

int GetWindowRgn (

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

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

// оконной области

);

Параметры

hWnd - дескриптор окна, оконная область которого извлекается.

hrgn - дескриптор области. Эта область получает копию оконной области.

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

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

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

Комментарии

Координаты оконной области окна относительны верхнего левого угла окна, а не клиентской области окна.

Для установки оконной области окна используйте функцию SetWindowRgn .

См. также

SetWindowRgn .

 

SetRectRgn

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

BOOL SetRectRgn (

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

int nLeftRect , // x -координата верхнего левого угла прямоугольника

int nTopRect , // y -координата верхнего левого угла прямоугольника

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

int nBottomRect // y -координата нижнего правого угла прямоугольника

);

Параметры

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

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

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

nRightRect - определяет x -координату нижнего правого угла прямоугольника.

nBottomRect - определяет y -координату нижнего правого угла прямоугольника.

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

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

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

Комментарии

Область не включает в себя нижнюю и правую границы прямоугольника.

См. также

CreateRectRgn .

 

UpdateWindow

Функция UpdateWindow обновляет клиентскую область указанного окна, отправляя ему сообщение WM _ PAINT, если область обновления ( update region ) окна не пуста. Функция отправляет сообщение WM _ PAINT напрямую оконной процедуре указанного окна, обходя очередь сообщений приложения. Если область обновления пуста, то сообщение не отправляется.

BOOL UpdateWindow (

HWND hWnd // дескриптор окна

);

Параметры

hWnd - идентифицирует обновляемое окно.

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

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

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

См. также

ExcludeUpdateRgn, GetUpdateRect, GetUpdateRgn, InvalidateRect, InvalidateRgn , WM_PAINT.

 

Хуки

 

ForegroundIdleProc

Функция-ловушка ( hook procedure ) ForegroundIdleProc является определяемой приложением функцией обратного вызова, которую вызывает система каждый раз, когда 32-битный поток переднего плана намеревается стать неактивным.

DWORD ForegroundIdleProc (

int code , // код хука

DWORD wParam , // не используется

LONG lParam // не используется

);

Параметры

code - определяет, должна ли функция-ловушка обработать сообщение. Если значение этого параметра HC_ACTION, то функция-ловушка должна обработать сообщение. Если значение этого параметра отрицательное, функция-ловушка должна передать сообщение функции CallNextHookEx без дальнейшей обработки и должна вернуть значение, возвращенное функцией CallNextHookEx .

wParam - не используется.

lParam - не используется.

Комментарии

Приложение устанавливает функцию-ловушку, указывая в качестве типа хука WH_FOREGROUNDIDLE и передавая указатель на функцию-ловушку в функцию SetWindowsHookEx .

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

См. также

CallNextHookEx, SetWindowsHookEx

 

UnhookWindowsHookEx

Функция UnhookWindowsHookEx удаляет процедуру хука, установленную в цепочку хуков функцией SetWindowsHookEx .

BOOL UnhookWindowsHookEx (

HHOOK hhk // дескриптор удаляемой процедуры хука

);

Параметры

hhk - идентифицирует хук, подлежащий удалению. Значение этого параметра является дескриптором хука, полученным предыдущим вызовом SetWindowsHookEx .

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

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

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

Комментарии

Процедура хука может быть в состоянии вызова другим потоком даже после завершения функции UnhookWindowsHookEx . Если процедура хука не вызывается одновременно другим потоком, то она удаляется непосредственно перед завершением функции UnhookWindowsHookEx .

См. также

SetWindowsHookEx, UnhookWindowsHook .

 

Память

 

HeapSize

Функция HeapSize возвращает размер блока памяти, выделенного из кучи функциями HeapAlloc или HeapReAlloc , в байтах.

DWORD HeapSize (

HANDLE hHeap , // дескориптор кучи

DWORD dwFlags , // контрольные флаги размера кучи

LPCVOID lpMem // указатель на память, чей размер возвращается

);

Параметры

hHeap - определяет кучу, в которой находится блок памяти. Этот дескриптор возвращается функциями HeapCreate или GetProcessHeap .

dwFlags - определяет некоторые контролируемые аспекты доступа к блоку памяти. В настоящее время определен только один флаг; тем не менее, все остальные значения флагов зарезервированы для будущего использования. Указание этого флага переопределит соответствующее значение флага, указанного в качестве значения параметра flOptions при создании кучи функцией HeapCreate .

Значение Пояснение
HEAP _ NO _ SERIALIZE Определяет, что взаимное исключение не будет использоваться, когда функция получает доступ к куче. Для дополнительной информации смотрите раздел "Комментарии" в описании функции HeapCreate .

lpMem - указывает на блок памяти, чей размер функция получает. Указатель возвращается функциями HeapAlloc или HeapReAlloc .

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

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

В случае неудачи возвращается 0 xFFFFFFFF . Функция не вызывает SetLastError . Приложение не может вызвать GetLastError для дополнительной информации об ошибке.

См. также

GetProcessHeap, HeapAlloc, HeapCreate, HeapDestroy, HeapFree, HeapReAlloc, SetLastError .

 

Подбор цветов

 

CreateColorSpace

Функция CreateColorSpace создает логическое цветовое пространство.

HCOLORSPACE CreateColorSpace (

LPLOGCOLORSPACE lpLogColorSpace

);

Параметры

lpLogColorSpace - указывает на структуру типа LOGCOLORSPACE .

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

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

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

Комментарии

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

См. также

DeleteObject, LOGCOLORSPACE .

 

Мультимедиа таймеры

 

TimeProc

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

void CALLBACK TimeProc (

UINT uID,

UINT uMsg,

DWORD dwUser,

DWORD dw1,

DWORD dw2

);

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

Параметры

uID - идентификатор события таймера. Этот идентификатор был возвращен функцией timeSetEvent при установке события.

uMsg - зарезервирован. Не используется.

dwUser - пользовательские данные, представленные значением параметра dwUser функции timeSetEvent.

dw1 - зарезервирован. Не используется.

dw2 - зарезервирован. Не используется.

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

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

Комментарии

Приложения не должны вызывать определяемые системой функции внутри функции обратного вызова, кроме PostMessage, timeGetSystemTime, timeGetTime, timeSetEvent, timeKillEvent, midiOutShortMsg, midiOutLongMsg и OutputDebugString.

Требования

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

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

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

См . также

timeSetEvent, PostMessage, timeGetSystemTime, timeGetTime, timeKillEvent, midiOutShortMsg, midiOutLongMsg, OutputDebugString.

 

timeBeginPeriod

Функция timeBeginPeriod устанавливает минимальное разрешение мультимедиа таймера для приложения или драйвера устройства.

MMRESULT timeBeginPeriod (

UINT uPeriod

);

Параметры

uPeriod - минимальное разрешение таймера в миллисекундах для приложения или драйвера устройства.

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

В случае успеха возвращается TIMERR_NOERROR или TIMERR_NOCANDO, если разрешение, заданное значением параметра uPeriod , находится вне допустимого диапазона.

Комментарии

Вызовите эту функцию непосредственно перед использованием сервисов мультимедиа таймера, и вызовите функцию timeEndPeriod после завершения использования сервисов мультимедиа таймера.

Вы должны каждому вызову timeBeginPeriod сопоставить вызов timeEndPeriod , определив одинаковое минимальное разрешение в обоих вызовах. Приложение может вызывать функцию timeBeginPeriod многократно, до тех пор, пока каждому ее вызову сопоставлен ответный вызов timeEndPeriod .

Требования

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

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

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

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

См. также

timeEndPeriod.

 

timeEndPeriod

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

MMRESULT timeEndPeriod(

UINT uPeriod

);

Параметры

uPeriod - минимальное разрешение таймера в миллисекундах, указанное в предыдущем вызове функции timeBeginPeriod .

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

В случае успеха возвращается TIMERR _ NOERROR или TIMERR _ NOCANDO, если разрешение, заданное значением параметра uPeriod , находится вне допустимого диапазона.

Комментарии

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

Вы должны каждому вызову timeBeginPeriod сопоставить вызов timeEndPeriod , определив одинаковое минимальное разрешение в обоих вызовах. Приложение может вызывать функцию timeBeginPeriod многократно, до тех пор, пока каждому ее вызову сопоставлен ответный вызов timeEndPeriod .

Требования

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

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

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

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

См . также

timeBeginPeriod .

 

timeGetDevCaps

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

MMRESULT timeGetDevCaps (

LPTIMECAPS ptc ,

UINT cbtc

);

Параметры

ptc - указатель на структуру типа TIMECAPS . Эта структура заполняется информацией о разрешении мультимедиа таймера.

cbtc - размер структуры типа TIMECAPS в байтах.

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

Возвращается TIMERR_NOERROR в случае успеха или TIMERR_STRUCT, если функция не может вернуть возможности устройства.

Требования

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

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

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

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

См . также

TIMECAPS.

 

timeGetSystemTime

Функция timeGetSystemTime извлекает системное время в миллисекундах. Системное время - это время, истекшее с момента старта Windows . Эта функция работает схожим с функцией timeGetTime образом. Смотри описание timeGetTime для подробного описания работы с данными функциями.

MMRESULT timeGetSystemTime (

LPMMTIME pmmt ,

UINT cbmmt

);

Параметры

pmmt - указатель на структуру типа MMTIME .

cbmmt - размер структуры типа MMTIME в байтах.

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

Возвращает TIMERR _ NOERROR . Системное время возвращается в качестве значения члена ms структуры типа MMTIME .

Требования

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

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

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

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

См . также

timeGetTime, MMTIME .

 

timeGetTime

Функция timeGetTime извлекает системное время в миллисекундах. Системное время - это время, истекшее с момента старта Windows .

DWORD timeGetTime (VOID);

Параметры

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

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

Функция возвращает системное время в миллисекундах.

Комментарии

Единственной разницей между этой функцией и функцией timeGetSystemTime является использование timeGetSystemTime структуры типа MMTIME для возвращения системного времени. У функции timeGetTime меньшие по сравнению с timeGetSystemTime накладные расходы.

Обратите внимание, что значение, возвращаемое функцией timeGetTime , имеет тип DWORD . Возвращаемое значение сбрасывается в нуль каждые 2^32 миллисекунд, что составляет примерно 49.71 дней. Это может вызвать проблемы в коде, который напрямую использует возвращаемое функцией timeGetTime значение в вычислениях, особенно, когда значение используется для контроля выполнения кода. Вы должны всегда в вычислениях использовать разницу между двумя возвращаемыми функцией timeGetTime значениями.

Windows NT /2000: Точность по умолчанию для функции timeGetTime может быть пять или более миллисекунд, в зависимости от машины. Вы можете использовать функции timeBeginPeriod и timeEndPeriod для увеличения точности timeGetTime . Если вы это сделаете, минимальная разница между двумя успешно возвращенными функцией timeGetTime значениями может быть меньше минимального периода, установленного функциями timeBeginPeriod и timeEndPeriod . Для измерения коротких интервалов времени с высокой точностью используйте функции QueryPerformanceCounter и QueryPerformanceFrequency.

Windows 95: Точность по умолчанию для функции timeGetTime составляет одну миллисекунду. Другими словами, функция timeGetTime может возвращать значения, отличающиеся друг от друга только на одну миллисекунду. И не имеет значения, были ли вызваны функции timeBeginPeriod и timeEndPeriod.

Требования

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

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

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

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

См . также

timeGetSystemTime, MMTIME, timeBeginPeriod, timeEndPeriod, QueryPerformanceCounter, QueryPerformanceFrequency.

 

timeKillEvent

Функция timeKillEvent отменяет указанное событие таймера

MMRESULT timeKillEvent (

UINT uTimerID

);

Параметры

uTimerID - идентификатор отменяемого события таймера. Этот идентификатор был возвращен функцией timeSetEvent , когда устанавливалось событие таймера.

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

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

Требования

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

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

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

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

См . также

timeSetEvent.

 

timeSetEvent

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

MMRESULT timeSetEvent (

UINT uDelay,

UINT uResolution,

LPTIMECALLBACK lpTimeProc,

DWORD_PTR dwUser,

UINT fuEvent

);

Параметры

uDelay - задержка события в миллисекундах. Если это значение лежит вне диапазона допустимых значений задержки, поддерживаемых таймером, функция возвращает ошибку.

uResolution - разрешение событий таймера в миллисекундах. Разрешение увеличивается при уменьшении значений; разрешение, установленное в нуль, показывает, что периодические события будут происходить с наибольшей возможной точностью. Для уменьшения системных издержек, тем не менее, вы должны использовать максимальное значение, соответствующее вашему приложению.

lpTimeProc - указатель на функцию обратного вызова, которая вызывается по истечению одиночного события или периодически по истечению периодических событий. Если fuEvent определяет флаг TIME_CALLBACK_EVENT_SET или TIME_CALLBACK_EVENT_PULSE, то значение параметра lpTimeProc интерпретируется как дескриптор события. Для любых других значений fuEvent , значение lpTimeProc интерпретируется как указатель на функцию со следующей сигнатурой:

void ( CALLBACK )( UINT uTimerID , UINT uMsg , DWORD_PTR dwUser , DWORD_PTR dw1 , DWORD_PTR dw2 ).

dwUser - определяемые пользователем данные.

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

Значение Пояснение
TIME_ONESHOT Событие происходит один раз, после uDelay миллисекунд.
TIME_PERIODIC Событие происходит каждые uDelay миллисекунд.

Параметр fuEvent также может принимать одно из следующих значений:

Значение Пояснение
TIME_CALLBACK_FUNCTION По истечении времени Windows вызывает функцию, определяемую значением параметра lpTimeProc . Поведение по умолчанию.
TIME_CALLBACK_EVENT_SET По истечении времени Windows вызывает функцию SetEvent для установки события, определяемого значением параметра lpTimeProc . Параметр dwUser игнорируется.
TIME_CALLBACK_EVENT_PULSE По истечении времени Windows вызывает функцию PulseEvent для срабатывания события, определяемого значением параметра lpTimeProc . Параметр dwUser игнорируется.
TIME_KILL_SYNCHRONOUS Передача этого флага предотвращает происхождение события после вызова функции timeKillEvent .

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

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

Комментарии

Каждый вызов timeSetEvent для периодических событий таймера требует соответствующего вызова функции timeKillEvent . Создание события с флагами TIME_KILL_SYNCHRONOUS и TIME_CALLBACK_FUNCTION предотвращает происхождение события после вызова функции timeKillEvent .

Требования

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

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

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

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

См. также

PulseEvent, SetEvent, timeKillEvent.

 

Выключение системы

 

LockWorkStation

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

BOOL LockWorkStation ( VOID );

Параметры

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

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

В случае успеха возвращается ненулевое значение. Поскольку функция выполняется асинхронно, ненулевое возвращаемое значение указывает, что операция была инициирована. Оно не указывает, была ли рабочая станция успешно заблокирована.

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

Комментарии

Общими причинами, по которым рабочая станция не может быть заблокирована, даже если вызов функции завершился успешно, могут быть: отсутствие вошедшего в систему пользователя, существующая блокировка рабочей станции, запущенность процесса не на интерактивном рабочем столе, отклонение запроса библиотекой графической идентификации и аутентификации (GINA DLL).

Вызов функции приводит к такому же результату, что и нажатие клавиш Ctrl + Alt + Del и щелчок по кнопке " Lock Workstation " ("Блокировка"). Для разблокирования рабочей станции пользователь должен войти в систему.

Требования

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

Windows 95/98/Me: Не поддерживается .

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

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

Содержание