Функции ввода. Сообщения мыши., страница 6

См.     \local-sources\chap09\09-18.txt

GetKeyState                                        • Windows 98   • Windows 2000

Описание

Функция GetKeyState выбирает состояние указанной виртуальной клавиши. Это состояние показывает, нажата ли клавиша, отпущена или переключена в то или иное состояние. Функция GetKeyState обычно используется для проверки состояния переключаемых клавиш: Caps Lock, Scroll Lock и Num Lock.

Синтаксис

SHORT GetKeyState( int nVirtKey )

Параметры

nVirtKey

int. Код виртуальной клавиши. Полный перечень кодов представлен в табл. 9.3. Если виртуальная клавиша представляет собой букву или цифру (от "А" до "Z", от "а" до "z" или от "0" до "9"), в качестве nVirtKey должно быть установлено значение кода ASCII этого символа. При использовании неанглийской раскладки клавиатуры виртуальные клавиши со значениями в диапазоне кодов ASCII от "А" до "Z" и от "0" до "9" служат для указания большинства символьных клавиш. Например в немецкой раскладке клавиатуры виртуальная клавиша со значением кода ASCII О (OX4F) относится к клавише "о", тогда как клавиша VK_OEM_1 относится к клавише "о с умлаутом" (6).

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

SHORT. Состояние клавиши закодировано в двух битах. Если старший бит равен 1, клавиша нажата; в ином случае, она отпущена. Если младший бит равен 1, клавиша переключена. Клавиша типа Caps Lock переключена, если она переведена во включенное состояние.

Включаемый файл

winuser.h

См. также

GetlnputState, GetAsyncKeyState

Соответствующие сообщения

WM_KEYDOWN, WM_KEYUP

Пример

Следующий пример аналогичен примеру, приведенному в описании функции GetKeyNameText, за исключением того, что выполняется проверка состояния клавиши Caps Lock. Если эта клавиша включена, ее имя отображается в верхнем регистре; в ином случае ее имя отображается в нижнем регистре.

См.    \local-sources\chap09\09-19.txt

GetLastlnputlnfo                                 • Windows 98   • Windows 2000

Описание

Функция GetLastlnputlnfo выбирает время последнего события ввода.

Синтаксис

BOOL GetLastInputInfo( PLASTINPUTINFO plii )

Параметры

рШ

PLASTINPUTINFO. Указатель на структуру LASTINPUTINFO, которая должна принять значение времени последнего события ввода.

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

BOOL. В случае успешного выполнения возвращаемое значение отлично от нуля; в ином случае возвращаемое значение — нуль.

Включаемый файл

winuser.h

Определение LASTINPUTINFO

typedef   struct   tagLASTINPUTINFO < UINT         cbSize; DWORD      dwTime ; }   LASTINPUTINFO ,    *PLASTINPUTINFO;

Члены

cbSize

UINT. Размер этой структуры в байтах.

dwlime

DWORD. Число тактов системных часов на момент получения последнего события ввода.

GetMouseMovePointsEx                        • Windows 98   •  Windows 2000

Описание

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

Синтаксис

Система хранит последние 64 значения координат курсора мыши и связанные с ними отметки времени. Если приложение передает значение координат курсора мыши в функцию GetMouseMovePointsEx и это значение существует в хронологии системы, функция выбирает указанное число координат из хронологии системы. В этой функции можно также передать отметку времени. int GetMouseMovePointsEx( UINT cbSize, LPMOUSEMOVEPOINT Ippt, LPMOUSEMOVEPOINT IpptBuf, int nBufPoints, DWORD dwResolution )

Параметры cbSize

UINT. Размер структуры MOUSEMOVEPOINT в байтах.

Ippt

LPMOUSEMOVEPOINT. Указатель на структуру MOUSEMOVEPOINT, которая содержит допустимые координаты курсора мыши и необязательную отметку времени. Функция GetMouseMovePointEx ищет эту точку в хронологии координат мыши. Если эта точка будет найдена, функция возвращает указанное число координат nBufPoints до указанной точки вклю-. чительно.

IpptBuf

LPMOUSEMOVEPOINT. Указатель на буфер, который должен принять данные о точках прохождения курсора мыши, представленные в виде структур MOUSEMOVEPOINT. Этот буфер должен иметь длину не меньше cbSize*nBuffPoints.

nBufPoints

int. Число точек, данные о прохождении которых должны быть выбраны.

dwResolution

DWORD. Необходимая разрешающая способность. Если этот параметр установлен равным GMMP_USE_DISPLAY_POINTS, для точек используется разрешающая способность дисплея. Если этот параметр установлен равным GMMP_USE_HIGH_RESOLUTION_POINTS, используются точ ки с высоким разрешением. Координаты х и у точек могут находиться в диапазоне от нуля до OxFFFF.

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

int. В случае успешного выполнения, возвращаемое значение — число точек в буфере; в ином случае функция возвращает значение -1. Если функция GetLastError возвращает значение GMMP_ERR_POINT_NOT_FOUND, это значит, что точку не удалось найти или она больше не находится в буфере системы.

Включаемый файл

winuser.h

Определение MOUSEMOVEPOINT

typedef   struct   tagMOUSEMOVEPOINT { int           x; int           у ; DWORD      time ; ULONG PTR  dwExtralnfo; }   MOUSEMOVEPOINT,    *PMOUSEMOVEPOINT;

Члены

X

int. Координата х курсора мыши.

У

int. Координата у курсора мыши.

time

DWORD. Отметка времени, связанная с координатами курсора мыши.

dwExtralnfo

ULONG_PTR. Дополнительная информация, связанная с координатой.

HideCaret                                          • Windows 98   • Windows 2000

Описание

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

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

Синтаксис

BOOL HideCaret( HWND hwnd )

Параметры

hwnd

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

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

BOOL. В случае успешного выполнения, возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый файл

winuser.h

См. также

ShowCaret, CreateCaret, DestroyCaret, SetCaretBIinkTime

Соответствующие сообщения

WM_PAINT

Пример

См. пример для функции CreateCaret.

LoadCursor                                        • Windows 98   • Windows 2000

Описание

Функция LoadCursor загружает указанный ресурс курсора из файла выполняемой программы (ЕХЕ) или из динамически загружаемой библиотеки (DLL — dynamic link library), связанной с текущим дескриптором экземпляра. Если курсор загружен в составе определения класса окна, то курсор мыши, находясь в пределах клиентской области окна, будет принимать форму загруженного курсора. Если требуется в разное время иметь разные формы курсора в клиентской области окна, то форма курсора класса окна должна быть установлена в NULL, а курсор должен быть указан путем вызова функции SetCursor при получении каждого сообщения WM_SETCURSOR.

Синтаксис

HCURSOR LoadCursor( HINSTANCE hinst, LPCTSTR IpszCursor )

Параметры

hinst

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

IpszCursor

LPCTSTR. Указатель на строку с нулевым символом в конце, которая содержит имя ресурса курсора, подлежащего загрузке. В качестве этого параметра может быть также указан идентификатор ресурса, созданный с помощью макрокоманды MAKEINTRESOURCE. Чтобы использовать один из предопределенных курсоров Win32, приложение должно установить параметр hinst в NULL, а параметр IpszCursor — в одно из значений, перечисленных в табл. 9.11.

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

HCURSOR. Дескриптор вновь загруженного курсора. Если курсор не мог быть загружен, возвращаемое значение — NULL.

Включаемый файл

winuser.h

Таблица 9.11. Предопределенные идентификаторы курсора

Значение

Описание

IDC_APPSTARTING

Стандартная стрелка и малые песочные часы

IDC_ARROW

Стандартная стрелка

IDC_CROSS

Перекрестие

IDC_HAND

(Windows 2000) Рука

IDC_HELP

Стрелка и вопросительный знак

IDCJBEAM

Текстовый двутавр

IDCJCON

Пустая пиктограмма

IDC_NO

Перечеркнутый кружок

IDC_SIZE

Четырехконечная стрелка

IDC_SIZEALL

То же, что и IDC_SIZE

IDC_SIZENESW

Двухконечная стрелка, указывающая на северо-восток и юго-запад

IDC_SIZENS

Двухконечная стрелка, указывающая на север и юг

IDC_SIZENWSE

Двухконечная стрелка, указывающая на северо-запад и юго-восток

IDC_SIZEWE

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

IDC_UPARROW

Вертикальная стрелка

IDC_WAIT

Песочные часы

См. также

SetCursor, CreateCursor

Соответствующие сообщения

WM_MOUSEMOVE, WMJSETCURSOR

Пример

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

См.    \local-sources\cbap09\09-20.txt

LoadCursorFromFile                             • Windows 98   • Windows 2000

Описание

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

Синтаксис

HCURSOR LoadCursorFromFile( LPCTSTR IpszFilename )

Параметры

IpszFilename

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

Таблица 9. 12. Системные

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

Илентификатор курсора

Имя курсора

OCR_APPSTARTING

AppStarting

OCR_NORMAL

Arrow (Стрелка)

OCR_CROSS

Crosshair (Перекрестие)

OCR_HAND

Hand (Рука)

OCR_HELP

Help (Справка)

OCRJBEAM

Ibeam (Двутавр)

OCRJCON

Icon (Пиктограмма)

OCR_NO

No (Нет)

OCR_SIZE

Size (Размер)

OCR_SIZEALL

SizeAII (Общий размер)

OCR_SIZENESW

SizeNESW

OCR_SIZENS

SizeNS

OCR_SIZENWSE

SizeNWSE

OCR_SIZEWE

SizeWE

OCR_UP

UpArrow

OCR_WAIT

Wait (Ожидание)

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

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

Включаемый файл

winuser.h

См. также

SetCursor, LoadCursor

LoadKeyboardLayout                           • Windows 98   • Windows 2000

Описание

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

Синтаксис

HKL LoadKeyboardLayout( LPCTSTR IpszKLName, UINT ufJags )

Параметры

IpszKLName

LPCTSTR Указатель на буфер, который содержит имя раскладки клавиатуры. Имя должно быть получено из шестнадцатиричного значения идентификатора языка, соответствующего раскладке. Например, американский диалект английского языка имеет идентификатор языка 0x0409, поэтому основная американо-английская раскладка имеет имя "00000409". Варианты американо-английской раскладки, такие как раскладка Dvorak, получают имена типа "00010409", "00020409" и т.д. Для получения идентификаторов языка может использоваться макрокоманда MAKELANGID.

uFlags

UINT. Указывает способ загрузки раскладки клавиатуры. Этот параметр может иметь одно или несколько значений, перечисленных в табл. 9.13, которые объединены с использованием двоичного оператора OR ( ).

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

HKL. Дескриптор раскладки клавиатуры. Возвращаемое значение — NULL, если раскладка клавиатуры не могла быть загружена.

Включаемый файл

winuser.h

Таблица 9.13. Значения параметра uFlags функции LoadKeyfaoardLayout

Значение

Описание

KLF_ACTIVATE

Раскладка загружена (если она еще не была загружена) и активизирована.

KLF_NOTELLSHELL

(Windows 98) При загрузке новой раскладки исключает возможность получения процедурой перехвата ShellProc кода перехвата HSHELLJ.ANGUAGE.

KLF_REORDER

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

KLF_REPLACELANG

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

KLF_SUBSTITUTE_OK

Поиск замены для раскладки производится в профиле пользователя (в системном реестре под ключом  HKEY_CURRENT_USER \Keyboard Layout\Subsfitutes). Например, если в этом разделе есть значение с именем "00000409, равным "00010409", то загрузка американо-английской раскладки ("00000409") с установленным флажком KLF  SUBSTITUTE  OK приводит к загрузке американо-английской раскладки Dvorak ("00010409").

KLF_SETFORPROCESS

(Windows 2000) Действителен только в сочетании с флажком KLF   ACTIVATE. Активизирует указанный идентификатор региональной установки ввода для всего процесса и посылает сообщение WMJNPUTLANGCHANGE текущей нити.

См. также

ActivateKeyboardLayout

Пример

В следующем примере, когда пользователь выбирает пункт меню Test!, загружается и активизируется испано-мексиканская раскладка клавиатуры. Если испано-мексиканская раскладка клавиатуры уже активна, при выборе пункта меню Test! активизируется следующая раскладка клавиатуры.

См.    \local-sources\chap09\09-21.txt

MapVirtualKey                                    • Windows 98   •  Windows 2000

Описание

Функция MapVirtualKey выполняет три отдельных операции, в зависимости от установленного значения параметра иМарТуре. Первой из этих операций является преобразование кодов виртуальных клавиш, используемых в сообщениях Windows, в скэн-код OEM компьютера. Во втором режиме выполняется обратное действие; в нем происходит преобразование из скэн-кодов OEM в коды виртуальных клавиш, используемых в Windows. В тре-

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

Эта функция чаще всего применяется для преобразования кодов виртуальных клавиш, используемых в сообщениях Windows, в значения ASCII, которые могут быть выведены на экран. В приложениях приходится иметь дело с отмеченными скэн-кодами OEM лишь в редких случаях, например, когда необходимо отличать друг от друга левую и правую клавиши Shift (обе они вырабатывают один и тот же код виртуальной клавиши).

Синтаксис

UINT MapVirtuaIKey( UINT uCode, UINT иМарТуре ) \

Параметры

и Code

UINT. Код виртуальной клавиши или скэн-код клавиши. Способ интерпретации этого значения зависит от параметра иМарТуре.

и Map Type

UINT. Выполняемое преобразование. В качестве этого параметра применяются значения, перечисленные в табл. 9.14.

Таблица 9. 14. Значения параметра иМарТуре функции MapVirtualKey

Значение

Описание

0

uCode — код виртуальной клавиши. Возвращается скэн-код. Если код виртуальной клавиши не указывает на различие между левой и правой клавишей, возвращается скэн-код левой клавиши.

1

uCode — скэн-код. Возвращается код виртуальной клавиши, который не указывает на различие между левой и правой клавишей.

2

(/Code — код виртуальной клавиши. В младшем слове возвращается значение символа ASCII, не переведенного в верхний регистр. Для указания мертвых клавиш (диакритических знаков) устанавливается старший бит возвращаемого значения.

3

uCode — скэн-код. Возвращается код виртуальной клавиши, который указывает на различие между левой и правой клавишей.

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

UINT. Скэн-код, код виртуальной клавиши или символьное значение, в зависимости от значений параметров u Code и иМарТуре. Если преобразование не было выполнено, возвращаемое значение — 0.

Включаемый файл

winuser.h

См. также

OemKeyScan, MapVirtualKeyEx

Соответствующие сообщения

WM_KEYDOWN, WM_KEYUP, WM_CHAR

Пример

В следующем фрагменте кода показаны два случая применения функции MapVirtualKey. При получении сообщения WM_KEYDOWN происходит преобразование кода виртуальной клавиши, содержащегося в параметре wParum. Функция MapVirtualKey преобразует код виртуальной клавиши в скэн-код OEM и в значение кода ASCII.

См.    \local-sources\chap09\09-22.txt

MapVirtualKeyEx                                • Windows 98   «• Windows 2000

Описание

Функция MapVirtualKeyEx преобразует код виртуальной клавиши в скэн-код или в символьное значение, либо преобразует скэн-код в код вирту-

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

Синтаксис

UINT MapVirtualKeyEx( UINT uCode, UINT иМарТуре, HKL dwhkl )

Параметры

и Code

UINT. Код виртуальной клавиши или скэн-код клавиши. Способ интерпретации этого значения зависит от параметра иМарТуре.

иМарТуре

UINT. Преобразование, которое должно быть выполнено. В качестве этого параметра применяются значения, перечисленные в табл. 9.14.

dwhkl

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

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

UINT. Скэн-код, код виртуальной клавиши или символьное значение, в зависимости от значения uCode и иМарТуре. Если преобразование не было выполнено, возвращаемое значение — 0.

Включаемый файл

winuser.h

См. также

MapVirtualKey

Соответствующие сообщения

WM_KEYDOWN, WM_KEYUP, WM_CHAR

OemKeyScan                                        • Windows 98   •  Windows 2000

Описание

Функция OemKeyScan отображает коды ASCII OEM от 0 до OxFF в скэн-коды OEM и состояния переключения регистра. Скэн-код OEM является частью параметра IParam, сопровождающего каждое сообщение \VM_KEYDOWN и WMJKEYUP. Функция OemKeyScan применяется при отправке других сообщений Windows, которые моделируют нажатия клавиш. Она может служить эффективным способом обмена информацией между окнами, которые уже имеют логику обработки сообщений, позволяющую принимать ввод с клавиатуры.

Синтаксис

DWORD OemKeyScan( WORD wOemChar )

Параметры

wOemChar

WORD. Значения ASCII символа OEM.

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

DWORD. Младшее слово содержит скэн-код данного символа OEM, a старшее — состояние переключения регистра, которое может представлять собой сочетание двоичных флажков, приведенных в табл. 9.15. Если при текущей раскладке клавиатуры данный символ не мог быть выработан нажатием одной клавиши, возвращаемое значение равно OxFFFFFFFF (-1).

Таблица 9. 15. Двоичныефлажкизначения, возвращаемогофункциейOemKeyScan

Бит

Описание

1

НажаталюбаяклавишаShift.

2

НажаталюбаяклавишаCtrl.

4

НажаталюбаяклавишаAlt.

Включаемый файл

winuser.h

См. также

VkKeyScan, MapVirtualKey

Соответствующр

le сообщения

WM_KEYDOWN, WM_KEYUP

Пример

В следующем примере показано использование функций VkKeyScan и OemKeyScan для отправки сообщения   WM_KEYDOWN. Когда пользователь выбирает пункт меню Test!, сообщение WM_KEYDOWN отправляется в главное окно приложения, имитируя нажатие клавиши А. При получении сообщения WM_KEYDOWN отображается окно сообщения, в котором показано, что была нажата клавиша этого символа.

См.    \local-sources\chap09\09-23.txt

ReleaseCapture                                    • Windows 98   • Windows 2000

Описание

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

Синтаксис

BOOL ReIeaseCapture( VOID )

Параметры

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

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый файл

winuser.h

См. также

SetCapture, GetCapture

Соответствующие сообщения

WM_MOUSEMOVE

Пример

См. пример для функции GetCapture.

ScreenToClient                                    • Windows 98   • Windows 2000

Описание

Функция ScreenToClient преобразует экранные координаты, которые содержатся в структуре POINT, указанной параметром IpPoint, в клиентские координаты. Эта функция часто используется в сочетании с функцией GetCursorPos для преобразования координат курсора мыши в координаты х, у клиентской области окна. Это обычно выполняется при обработке сообщений WM_MOUSEMOVE во время перетаскивания линий или позиционирования текста в клиентской области.

Синтаксис

BOOL ScreenToClient( HWND hWnd, LPPOINT IpPoint )

Параметры

hWnd

HWND. Дескриптор окна, клиентская область которого будет использоваться для преобразования.

IpPoint

LPPOINT. Указатель на структуру POINT, которая содержит экранные координаты, подлежащие преобразованию.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый

файл

winuser.h

См. также

GetCursorPos, ClientToScreen

Соответствующие сообщения

WMJMOUSEMOVE, \VM_LBUTTONDOWN, WM_NCMOUSEMOVE

Пример

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

См.    \local-sources\chap09\09-24.txt

SetCapture                                         • Windows 98   • Windows 2000

1

Описание

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

Синтаксис

HWND SetCapture( HWND hWnd)

Параметры

hWnd

HWND. Дескриптор окна в текущей нити, которое должно перехватывать события мыши.

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

HWND. Дескриптор окна, которое до сих пор перехватывало события мыши. Если такое окно не существует, возвращаемое значение — NULL.

Включаемый

файл

winuser.h

См. также

ReleaseCapture, GetCapture

Соответствующие сообщения

WM_MOUSEMOVE, WM_SETFOCUS

Пример

См. пример для функции GetCapture.

SetCaretBlinkTime                               • Windows 98   •  Windows 2000

Описание

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

Синтаксис

BOOL SetCaretBlinkTime( UINT wMSeconds )

Параметры

wMSeconds

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

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый файл

winuser.h

См. также

GetCaretBlinkTime

Пример

См. пример для функции GetCaretBlinkTime.

SetCaretPos                                        * Windows 98   Ф Windows 2000

Описание

Функция SetCaretPos перемещает знак вставки в указанные координаты, Если окно, которое владеет знаком вставки, было создано со стилем класса CS OWNDC, то указанные координаты зависят от режима отображения, связанным с этим окном. Это — основная функция для перемещения знака вставки в клиентской области окна. Окно может владеть одновременно не более чем одним знаком вставки. Для загрузки или построения знака вставки применяется функция CreateCaret.

Синтаксис

BOOL SetCaretPos( int nX, int nY)

Параметры

пХ

int. Новая координата дс знака вставки.

nY

int. Новая координата у знака вставки.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый файл

winuser.h

См. также

CreateCaret, HideCaret, ShowCaret, DPtoLP

Пример

См. пример для функции CreateCaret.

SetCursor                                           * Windows 98   * Windows 2000

Описание

Функция SetCursor позволяет изменить форму курсора. Функция SetCursor обычно применяется при обработке сообщений WM_SETCURSOR или WM MOUSEMOVE и работает быстро, если курсор уже установлен, поэтому эту функцию можно неоднократно вызывать для изменения формы курсора без заметного замедления работы программы. Формы курсора вначале должны быть загружены с помощью функции LoadCursor. Применение функции SetCursor в границах окна, имеющего определение курсора, заставляет курсор мерцать. Это связано с тем, что система Windows при отправке сообщений \VM_MOUSEMOVE выполняет прямое и обратное переключение между классом курсора и курсором, загруженным с помощью функции SetCursor. Для предотвращения возникновения этой проблемы класс курсора должен быть установлен в NULL.

Синтаксис

HCURSOR SetCursor( HCURSOR hCursor )

Параметры

A Cursor

HCURSOR. Дескриптор отображаемого курсора. Для получения этого дескриптора применяется функция LoadCursor.

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

HCURSOR. Дескриптор предыдущей формы курсора. Если предыдущей формы курсора не было, возвращаемое значение — NULL.

Включаемый файл

winuser.h

См. также

LoadCursor

Соответствующие сообщения

WM_SETCURSOR, WM_MOUSEMOVE

Пример

См. пример для функции CreateCursor.

SetCursorPos                                      • Windows 98   •  Windows 2000

Описание

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

Синтаксис

BOOL SetCursorPos( int nX, mi nY)

Параметры

пХ

int. Новая координата х курсора в экранных координатах.

nY

int. Новая координата у курсора в экранных координатах.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый

файл

winuser.h

См. также

GetCursorPos, ClientToScreen

Соответствующие сообщения

WM_MOUSEMOVE

Пример

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

См.    \local-sources\chap09\09-25.txt

SetDoubleClickTime                             • Windows 98   *  Windows 2000

Описание

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

Синтаксис

BOOL SetDoubIeCIickTime( UINT ulnterval )

Параметры

ulnterval

UINT. Время в миллисекундах между первым и вторым щелчками двойного щелчка. Если этот параметр установлен равным 0, Windows использует заданное по умолчанию время двойной щелчка, равное 500 миллисекундам.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый файл

winuser.h

См. также

GetDoubleClickTime

Соответствующие сообщения

WM_LBUTTONDBLCLK, WM_MBUTTONDBLCLK, WM_RBUTTONDBLCLK

Пример

См. пример для функции GetDoubleClickTime.

SetKeyboardState                                • Windows 98   • Windows 2000

Описание

Функция SetKeyboardState копирует 256-байтовый массив состояний клавиш клавиатуры в таблицу состояний ввода с клавиатуры вызывающей нити. Доступ к таблице состояний может быть получен с помощью функций GetKeyboardState и GetKeyState. Изменения, внесенные в эту таблицу, не влияют на ввод с клавиатуры в любой другой нити. Для установки одной из клавиш-переключателей во включенное состояние применяется значение 0x81 в 256-байтовом массиве. Для установки во включенное состояние непереключаемой (обычной) клавиши применяется значение 0x80. Виртуальная клавиша представляет собой индекс элемента в массиве.

Синтаксис

BOOL SetKeyboardState( LPBYTE IpbKeyState )

Параметры

IpbKeyState

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

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

BOOL. В случае успешного выполнения возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый файл

winuser.h

См. также

GetKeyboardState

Соответствующие сообщения

WM_KEYDOWN, WMJKEYUP, WM_CHAR

Пример

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

См.    \local-sources\chap09\09-26. txt

ShowCaret                                         • Windows 98   • Windows 2000

Описание

Функция ShowCaret делает знак вставки видимым на экране в текущей позиции знака вставки. Когда знак вставки становится видимым, он автоматически начинает мерцать. Это помогает пользователю в работе, если знаи вставки перед этим был скрыт на время обработки сообщений WM_PAIN1 или на время выполнения операций, которые смещают фокус деятельности с клиентской области (при выборе пунктов меню и т.д.). Когда пользователь возвращается к рабочей области, знак вставки можно снова сделат] видимым с помощью функции ShowCaret. Как уже неоднократно упоминалось, знак вставки разделяется между всеми приложениями. Если зна! вставки отображается в окне одной программы, знак вставки в окне дру' гой программы автоматически исчезает.

Синтаксис

BOOL ShowCaret( HWND hwnd )

Параметры

hwnd

HWND. Дескриптор окна, которое является владельцем знака вставки. Если этот параметр — NULL, ShowCaret ищет текущую задачу для окна, в котором в последний раз появился знак вставки.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый

файл

winuser.h

См. также

HideCaret, CreateCaret, DestroyCaret, SetCaretBlinkTime

Соответствующие сообщения

WM_PAINT

Пример

См. пример для функции CreateCaret.

Show/Cursor                                         • Windows 98   +  Windows 2000

Описание

Функция ShowCursor отображает или скрывает курсор мыши в зависимости от значения, указанного в параметре bShow.

Синтаксис

int ShowCursor( BOOL bShow )

Параметры

bShow

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

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

int. Новый счетчик отображений.

Включаемый

файл

winuser.h

См. также

ClipCursor, GetCursorPos, SetCursor, SetCursorPos

Пример

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

См.    \local-sovrces\chap09\09-27.txt

SwapMouseButton                                • Windows 98   •  Windows 2000

Описание

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

Синтаксис

BOOL SwapMouseButton( BOOL bSwap )

Параметры

bSwap

BOOL. Если этот параметр установлен в TRUE, левая кнопка генерирует сообщения правой кнопки, а правая — сообщения левой кнопки. Если этот параметр установлен в FALSE, восстанавливаются первоначальные назначения кнопок.

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

BOOL. Если назначение кнопок мыши было изменено на противоположное до вызовы этой функции, возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE.

Включаемый файл

winuser.h

См. также

SetDoubleClickTime

Соответствующие сообщения

WM_LBUTTONDO\VN, WM_RBUTTONDOWN

Пример

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

См.    \local-sources\chap09\09-28. txt

UnloadKeyboardLayout                        • Windows 98   • Windows 2000

Описание            "~

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

Синтаксис

BOOL UnloadKeyboardLayout( HKL hkl )

Параметры

hkl

HKL. Дескриптор раскладки клавиатуры, которая должна быть выгружена.

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

BOOL. В случае успешного выполнения — TRUE; в ином случае возвращаемое значение — FALSE,

Включаемый файл

winuser.h

См. также

ActivateKeyboardLayout, GetKeyboardLayoutName, LoadKeyboardLayout

Пример

См. пример для функции LoadKeyboardLayout.

VkKeyScan                                          * Windows 98   • Windows 2000

Описание

Функция VkKeyScan преобразует символ в соответствующий код виртуальной клавиши и состояние переключения регистра для текущей клавиатуры. Функция VkKeyScan применяется для отправки сообщений WM_KEYDOWN и WM_KEYUP другим окнам. Она может использоваться в качестве эффективного способа передачи информации между окнами, если окно-получатель уже содержит логику ввода с клавиатуры в своей функции WndProc.

Синтаксис

SHORT VkKeyScan( TCHAR ch )

Параметры

ей

TCHAR. Символ, который должен быть преобразован в код виртуальной клавиши.

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

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

дит клавишу, код которой преобразуется в переданный символьный код, и младший, и старшие байты содержат -1.

Включаемый

файл

winuser.li

См. также

VkKeyScanEx, OemKeyScan, MapVirtualKey

Соответствующие сообщения

WM_KEYDOWN, WM_KEYUP

Пример

См. пример для функции OemKeyScan.

VkKeyScanEx                                      * Windows 98   + Windows 2000

Описание

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

Синтаксис

SHORT VkKeyScanEx( TCHAR сЛ, HKL hkl )

Параметры

сЛ

TCHAR. Символ, который должен быть преобразован в код виртуальной клавиши.

М/

HKL. Раскладка клавиатуры, которая должна применяться для преобразования символа. В качестве этого параметра может быть указан любой дескриптор раскладки клавиатуры, возвращенный ранее функцией LoadKey-board Layout.

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

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

Включаемый файл

winuser.h

См. также

VkKeyScan, OemKeyScan, MapVirtualKey

Соответствующие сообщения

WM_KEYDOWN, WM_KEYUP

Пример

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

См.    \local-sources\chap09\09-29.txt