Описания функции пользовательского ввода
В табл. 9.4 приведены функции пользовательского ввода. За таблицей следуют подробные описания функций.
Таблица 9.4. Функции пользовательского ввода |
|||||||||||||||
Функция |
Назначение |
||||||||||||||
ActivateKeyboardLayout |
Активизирует другую раскладку клавиатуры |
||||||||||||||
Blocklnput |
Блокирует события ввода клавиатуры и мыши, исключая для них возможность достигать приложений |
||||||||||||||
ClientToScreen |
Преобразовывает координаты точки из клиентских координат в экранные координаты |
||||||||||||||
ClipCursor |
Ограничивает курсор мыши областью экрана |
||||||||||||||
CopyCursor |
Копирует курсор |
||||||||||||||
CreateCaref |
Создает форму знака вставки |
||||||||||||||
CreafeCursor |
Создает форму курсора |
||||||||||||||
DestroyCaret |
Удаляет знак вставки из окна |
||||||||||||||
DestroyCursor |
Удаляет курсор, созданный с помощью функции CreateCursor |
||||||||||||||
DragDetecf |
Перехватывает события мыши и следит за перетаскиванием |
||||||||||||||
GetAsyncKeyState |
Определяет, была ли нажата клавиша |
||||||||||||||
GetCapture |
Выбирает дескриптор окна, которое перехватывает события мыши |
||||||||||||||
GetCaretBlinkTime |
Определяет текущую частоту мерцания знака вставки |
||||||||||||||
GetCaretPos |
Определяет местоположение знака вставки в клиентской области окна |
||||||||||||||
GetClipCursor |
Определяет прямоугольную область, в которой был в последний раз ограничен с помощью функции ClipCursor курсор мыши |
||||||||||||||
GetCursor |
Выбирает дескриптор текущего курсора |
||||||||||||||
GetCursorlnfo |
Выбирает информацию о глобальном курсоре |
||||||||||||||
GetCursorPos |
Выбирает координаты ж, у курсора мыши' |
||||||||||||||
GetDoubleClickTime |
Выбирает значение времени двойного щелчка для мыши |
||||||||||||||
GetlnputState |
Проверяет наличие сообщений кнопки мыши или клавиатуры в очереди сообщений вызывающей нити |
||||||||||||||
GetKeyboardLayout |
Выбирает активную раскладку клавиатуры для указанной нити |
||||||||||||||
GetKeyboardLayoutList |
Выбирает дескриптор раскладки клавиатуры, соответствующий текущему набору региональных установок ввода в системе |
||||||||||||||
GetKeyboardLayoutName |
Выбирает имя активной раскладки клавиатуры |
||||||||||||||
Функция |
Назначение |
||||||||||||||
GetKeyboardState |
Определяет состояние всех клавиш в одном обращении к функции |
||||||||||||||
GetKeyboardType |
Выбирает тип клавиатуры или число функциональных клавиш |
||||||||||||||
GetKeyNameText |
Выбирает имя клавиши |
||||||||||||||
GetKeyState |
Определяет, нажата ли в настоящее время клавиша или активна ли клавиша-переключатель |
||||||||||||||
GetLastlnputlnfo |
Выбирает время последнего события ввода |
||||||||||||||
GetMouseMovePointsEx |
Выбирает хронологию предыдущих изменений координат мыши или пера |
||||||||||||||
HideCaret |
Делает знак вставки невидимым |
||||||||||||||
LoadCursor |
Загружает новую форму курсора |
||||||||||||||
LoadCursorFromFile |
Создает курсор на основе данных, содержащихся в файле |
||||||||||||||
LoadKeyboardLayout |
Загружает раскладку клавиатуры |
||||||||||||||
MapVirtualKey |
Выполняет преобразование между кодами виртуальных клавиш, кодами ASCII и скэн-кодами |
||||||||||||||
MapVirtualKeyEx |
Выполняет преобразование между кодами виртуальных клавиш, кодами ASCII и скэн-кодами с использованием раскладки клавиатуры |
||||||||||||||
OemKeyScan |
Выполняет преобразование из кода ASCII в скэн-код OEM клавиатуры |
||||||||||||||
ReleaseCapture |
Прекращает перехват событий мыши |
||||||||||||||
ScreenToClient |
Преобразовывает экранные координаты в координаты клиентского окна |
||||||||||||||
Sendlnput |
Синтезирует комбинации клавиш, движения мыши и щелчки кнопки |
||||||||||||||
SetCapture |
Перехватывает события мыши, чтобы сообщения мыши принимала только программа с перехваченной мышью |
||||||||||||||
SetCaretBlinkTime |
Устанавливает частоту мерцания знака вставки данной формы на экране |
||||||||||||||
SetCaretPos |
Устанавливает позицию знака вставки |
||||||||||||||
SetCursor |
Определяет, курсор какой формы должен быть отображен |
||||||||||||||
SetCursorPos |
Перемещает курсор мыши в новое положение |
||||||||||||||
SetDoubleClickTime |
Изменяет время двойного щелчка кнопки мыши |
||||||||||||||
SetKeyboardState |
Устанавливает состояние клавиатуры для всех 256 виртуальных клавиш в одном обращении к функции |
||||||||||||||
SetSystemCursor |
Заменяет системный курсор новым курсором |
||||||||||||||
ShowCaret |
Делает знак вставки видимым в его текущем положении |
||||||||||||||
ShowCursor |
Показывает или скрывает курсор данной формы |
||||||||||||||
SwapMouseButton |
Меняет назначение правой и левой кнопки мыши на противоположное |
||||||||||||||
TrackMouseEvent |
Выставляет сообщения, когда указатель мыши выходит за пределы окна или располагается над контролируемой областью |
||||||||||||||
UnloadKeyboardLayout |
Удаляет раскладку клавиатуры |
||||||||||||||
функция |
Назначение |
||||||||||||||
VkKeyScan |
Переводит символ ANSI в соответствующий код виртуальной клавиши |
||||||||||||||
VkKeyScanEx |
Переводит символ ANSI в соответствующий код виртуальной клавиши с использованием раскладки клавиатуры |
||||||||||||||
ActivateKeyk |
joardLayout • Windows 98 • Windows 2000 |
||||||||||||||
Описание |
Функция ActivateKeyboardLayout активизирует другую раскладку клавиатуры для текущей нити. Одновременно может быть загружено несколько раскладок клавиатуры, но активной является только одна из них. Загрузка нескольких раскладок клавиатуры дает возможность быстро переключаться между ними. В случае поддержки нескольких языков эта функция принимает дескрипторы раскладки клавиатуры, которые обозначают не только региональную установку, но и физическую раскладку. |
||||||||||||||
Синтаксис |
HKL ActivateKeyboardLayout( HKL hKL, UINT uFlags ) |
||||||||||||||
Параметры |
|||||||||||||||
hKL |
HKL. Раскладка клавиатуры, которая будет активизирована. Раскладка должно быть загружена с помощью предыдущего вызова функции LoadKeyboardLayout. Этот параметр должен представлять собой либо дескриптор раскладки клавиатуры, либо одно из значений, перечисленных в табл. 9.5. |
||||||||||||||
Таблица 9.5. Значения параметра hKL функции ActivateKeyboardLayout |
|||||||||||||||
Значение |
Описание |
||||||||||||||
HKL_NEXT |
Выбрать следующую раскладку в круговом списке загруженных раскладок, поддерживаемых Windows |
||||||||||||||
HKL_PREVK>US |
Выбрать предыдущую раскладку в круговом списке загруженных раскладок, поддерживаемых Windows |
||||||||||||||
uFlags |
UINT. Указывает, как должна быть активизирована раскладка клавиатуры. Если загружено меньше трех раскладок клавиатуры, данный флажок не имеет смысла. Этот параметр может иметь одно или несколько значений (табл. 9.6), объединенных с помощью двоичного оператора OR (|). |
||||||||||||||
Таблица 9.6..3начения параметра uRags функции ActivateKeyboardLayout |
|||||||||||||||
Значение |
Описание |
||||||||||||||
KLF REORDER |
Переупорядочить циклический список загруженных раскладок клавиатуры в системе. Например, если у пользователя активна английская раскладка, а также загружены французская, немецкая и испанская раскладки (в указанном порядке), то активизация немецкой раскладки с установленным битом KLF_REORDER приводит к получению следующего порядка раскладок: немецкая, английская, французская и испанская. Активизация немецкой раскладки без установки бита KLF_REORDER приводит к получению следующего порядка: немецкая, испанская, английская, французская. |
||||||||||||||
KLF_RESET |
(Windows 2000) Если этот флажок установлен, но не установлен флажок KLF_SHIFTLOCK, состояние Caps Lock можно выключить, снова нажав клавишу Caps Lock. Если установлен и этот флажок, и KLF_SHIFTLOCK, состояние Caps Lock можно выключить, нажав любую из клавиш Shift. |
||||||||||||||
Значение |
Описание |
||||||||||||||
KLF_SETFORPROCESS |
(Windows 2000) Активизирует указанный идентификатор региональной установки для всего процесса и посылает сообщение WMJNPUTLANGCHANGE. |
||||||||||||||
KLF_SHIFTLOCK |
(Windows 2000) Этот флажок используется в сочетании с флажком KLF_RESET. |
||||||||||||||
KLF_UNLOADPREVK>US |
Выгружена раскладка, которая перед этим была активна. |
||||||||||||||
Возвращаемое значение |
HKL. В случае успешного выполнения возвращаемое значение — предыдущий идентификатор региональной установки ввода; в ином случае возвращаемое значение — нуль. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
LoadKeyboardLayout, GetKeyboardLayoutName, UnloadKeyboardLayout |
||||||||||||||
Пример |
См. пример для функции LoadKeyboardLayout. |
||||||||||||||
Blocklnput • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция Blocklnput блокирует события ввода клавиатуры и мыши, исключая для этих событий возможность достигать приложений. Если ввод заблокирован, то реальный физический ввод, выполняемый с помощью мыши или клавиатуры, не влияет на состояние синхронных или асинхронных клавиш входной очереди. Однако нить, которая заблокировала ввод, может воздействовать на состояние этих клавиш. Система разблокирует ввод в следующих случаях. Нить, которая неожиданно блокировала ввод, выходит без явного деблокирования ввода. В Windows 98 система отображает диалоговое окно Close Program/Fault. Это может происходить при аварийном завершении работы нити или при нажатии пользователем клавиш Ctrl+Alt+Delete. В Windows 2000 пользователь нажимает клавиши Ctrl+Alt+Delete или система вызывает модальное окно сообщения Hard System Error. |
||||||||||||||
Синтаксис |
BOOL Blocklnput( BOOL bBlock ) |
||||||||||||||
Параметры |
|||||||||||||||
bBlock |
BOOL. Если этот параметр установлен в TRUE, события ввода клавиатуры и мыши блокируются. Если этот параметр установлен в FALSE, события ввода клавиатуры и мыши разблокируются. Разблокировать ввод может только та нить, которая его заблокировала. |
||||||||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения возвращаемое значение отлично от нуля; в ином случае, если ввод уже заблокирован, возвращаемое значение — нуль. |
||||||||||||||
Включаемый файл |
winable.h |
||||||||||||||
ClientToScreen • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция ClientToScreen преобразует координаты точки, измеряемые относительно клиентской области, в координаты, измеряемые относительно левого верхнего угла экрана. |
||||||||||||||
Синтаксис |
BOOL ClientToScreen( HWND hWnd, LPPOINT Ippt ) |
||||||||||||||
Параметры |
|||||||||||||||
hWnd |
HWND. Дескриптор окна, клиентская область которого используется для преобразования. |
||||||||||||||
Ippt |
LPPOINT. Указатель на структуру POINT, содержащую клиентские координаты, которые должны быть преобразованы. В случае успешного выполнения функции новые экранные координаты будут скопированы в эту структуру. |
||||||||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
SetCapture, ScreenToClient |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_MOUSEMOVE |
|||||||||||||||
Пример |
Следующая функция принимает две точки в клиентских координатах (которые могут быть получены из данных IParam сообщения WMJLBUTTONDOWN) и преобразует их в экранные координаты. Затем функция выводит на экран прямоугольник, очерчивая область между двумя точками. |
||||||||||||||
См. \local-sources\chap09\09-01.txt |
|||||||||||||||
ClipCursor • Windows 98 *• Windows 2000 |
|||||||||||||||
Описание |
Функция ClipCursor ограничивает перемещение курсора прямоугольной областью на экране. Если последующая позиция курсора (установленная функцией SetCursorPos или мышью) будет находиться за пределами этой прямоугольной области, Windows автоматически скорректирует позицию, чтобы курсор оставался в пределах этой области. Курсор — разделяемый ресурс. Если приложение ограничивает перемещение курсора, оно должно отпустить курсор с помощью функции ClipCursor перед передачей управления другому приложению. В Windows 2000 вызывающий процесс должен иметь доступ WINSTA_WRITEATTRIBUtES к станции окна. |
||||||||||||||
Синтаксис |
BOOL CUpCursor( CONST RECT* Iprc ) |
||||||||||||||
Параметры |
|||||||||||||||
Iprc |
CONST RECT*. Указатель на структуру RECT, содержащую экранные координаты левого верхнего и правого нижнего углов ограничительного прямоугольника. Если этот параметр установлен в NULL, то курсор может перемещаться по всему экрану. |
||||||||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
GetCapture, GetCIipCursor |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_MOUSEMOVE |
|||||||||||||||
Пример |
Когда пользователь выбирает пункт меню Test!, курсор мыши ограничивается областью, охваченной прямоугольником с экранными координатами 10,10 и 200,200. Приложение освобождает курсор мыши во время своего закрытия. |
||||||||||||||
См. \local-sources\chap09\09-02. txt |
|||||||||||||||
CopyCursor * Windows 98 + Windows 2000 |
|||||||||||||||
Описание |
CopyCursor — макрокоманда, которая копирует курсор. Эта макрокоманда разрешает приложению или динамически загружаемой библиотеке (DLL — dynamic link library) получить копию формы курсора, принадлежащей другому модулю. Если другой модуль освобождается, приложение по-прежнему имеет возможность использовать эту форму курсора. Макрокоманда CopyCursor определена как вызов функции Copylcon. Перед закрытием приложение должно вызвать функцию DestroyCursor для освобождения всех системных ресурсов, связанных с курсором. Функция CopyCursor не должна применяться для анимационных курсоров. Вместо нее следует использовать функцию Copylmage. |
||||||||||||||
Синтаксис |
HCURSOR CopyCursor( HCURSOR hCur ) |
||||||||||||||
Параметры |
|||||||||||||||
hCur |
HCURSOR. Курсор, который должен быть скопирован. |
||||||||||||||
Возвращаемое значение |
HCURSOR. В случае успешного выполнения возвращаемое значение — дескриптор дубликата курсора; в ином случае возвращаемое значение — NULL. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
Copylcon, GetCursor, SetCursor, ShowCursor, LoadCursor |
||||||||||||||
Пример |
В следующем примере происходит загрузка DLL с именем RESOURCE.DLL и загрузка из нее курсора, аналогичного курсору + программы Excel. Загруженный курсор копируется с помощью функции CopyCursor и используется в приложении. При выходе из приложения скопированный курсор уничтожается. |
||||||||||||||
См. \local-sources\chap09\09-03.txt |
|||||||||||||||
CreateCaret • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция CreateCaret создает новую форму для системного знака вставки и передает его в указанное окно. Знак вставки может иметь форму линии, блока или растрового изображения. В любой момент времени для любого окна может существовать только один знак вставки. Функция CreateCaret служит в качестве первого этапа вывода знака вставки на экран. За этой функцией обычно следуют функции SetCaretPos и ShowCaret. |
||||||||||||||
Синтаксис |
BOOL CreateCaret( HWND hWnd, HBITMAP hBitmap, int nWidth, int nHeight ) |
||||||||||||||
Параметры |
|||||||||||||||
hWnd |
HWND. Дескриптор окна, которое является владельцем знака вставки. |
||||||||||||||
hBitmap |
HBITMAP. Дескриптор растрового изображения, которое определяет форму знака вставки. Если этот параметр установлен в NULL, создастся черный знак вставки шириной nWidth и высотой nHeight. Если этот параметр установлен равным (HBITMAP)l, создается серый знак вставки. Дескриптор растрового изображения должен быть создан с помощью функции CreateBitmap, CreateDIBitmap или LoadBitmap. |
||||||||||||||
n Width |
int. Ширина знака вставки в логических единицах длины. Если этот параметр равен 0, ширина устанавливается равной значению ширины рамки окна, определяемому системой. Если hBitmap — дескриптор растрового изображения, этот параметр игнорируется. |
||||||||||||||
nHeight |
int. Высота знака вставки в логических единицах длины. Если этот параметр равен 0, высота устанавливается равной значению высоты рамки окна, определяемому системой. Если hBitmap — дескриптор растрового изображения, этот параметр игнорируется. |
||||||||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
DestroyCaret, SetCaretPos, ShowCaret, LoadBitmap |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_SETFOCUS, WM_KILLFOCUS |
|||||||||||||||
Пример |
В следующем примере показано создание знака вставки и его применение при смене фокуса и выводе на экран. Знак вставки создается, когда приложение получает фокус, и уничтожается при потере фокуса. Обратите внимание, как происходит скрытие знака вставки перед выводом на экран (сообщение WM_PAINT), а затем его повторное отображение. |
||||||||||||||
См. \local-sources\chap09\09-04.txt |
|||||||||||||||
CreateCursor * Windows 98 + Windows 2000 |
|||||||||||||||
Описание |
Функция CreateCursor создает курсор мыши в соответствии со следующими параметрами: размер, двоичные шаблоны и активный участок. Формой курсора управляют две области памяти, содержащие маски для курсора. Биты в этих блоках памяти сравниваются с пикселями экрана с использованием операции логическое "И" (AND) и логическое "исключительное ИЛИ" (XOR). Результаты показаны в табл. 9.7. Курсор можно заставить изменяться в зависимости от его местонахождения на экране или в зависимости от выполняемого действия. |
||||||||||||||
Таблица 9.7. Логические маски курсора |
|||||||||||||||
Значения двоичной маски AND |
Значения двоичной маски XOR |
User, отображаемый на экране |
|||||||||||||
0 |
0 |
Черный |
|||||||||||||
0 |
1 |
Белый |
|||||||||||||
1 |
0 |
Прозрачный |
|||||||||||||
1 |
1 |
Инвертированный |
|||||||||||||
Синтаксис |
HCURSOR CreaieCuHsDr( HINSTANCE hinst, int xHotSpot, int yHotSpot, int n Width, int nHeight, CONST VOID* pvANDplane, CONST VOID* pvXORplane ) |
||||||||||||||
Параметры |
|||||||||||||||
hinst |
HINSTANCE. Дескриптор экземпляра приложения, создающего курсор. |
||||||||||||||
xHotSpot |
int. Горизонтальная позиция активной области курсора в пикселях. |
||||||||||||||
yHotSpot |
int. Вертикальная позиция активной области курсора в пикселях. |
||||||||||||||
n Width |
int. Ширина курсора в пикселях. |
||||||||||||||
nHeight |
int. Высота курсора в пикселях. |
||||||||||||||
pvANDplane |
CONST VOID*. Указатель на массив байтов, который содержит двоичные значения для двоичной маски курсора AND, аналогичные применяемым в аппаратно-зависимом монохромном растровом изображении. |
||||||||||||||
pvXORplane |
CONST VOID*. Указатель на массив байтов, который содержит двоичные значения для двоичной маски курсора XOR, аналогичные применяемым в аппаратно-зависимом монохромном растровом изображении. |
||||||||||||||
Возвращаемое значение |
HCURSOR. В случае успешного выполнения возвращаемое значение обозначает курсор; в ином случае возвращаемое значение — NULL. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
LoadCursor, DestroyCursor |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_MOUSEMOVE, WM_SETCURSOR |
|||||||||||||||
Пример |
В следующем примере функция CreateCursor применяется для создания прямоугольного курсора серого цвета. Когда пользователь выбирает пункт меню Test!, форма курсора изменяется и он принимает вид буквы X на сером фоне. Курсор этой формы активен только в клиентской области окна. |
||||||||||||||
См. \local-sources\chap09\09-05.txt |
|||||||||||||||
DestroyCaret * Windows 98 * Windows 2000 |
|||||||||||||||
Описание |
DestroyCaret уничтожает текущую форму знака вставки, отменяет право владения знаком вставки, принадлежащие окну, и удаляет знак вставки с экрана. Если форма знака вставки основана на растровом изображении, функция DestroyCaret не освобождает растровое изображение. Для временного скрытия и отображения знака вставки применяются функции HideCaret и ShowCaret. |
||||||||||||||
Синтаксис |
BOOL DestroyCaret( VOID ) |
||||||||||||||
Параметры |
Эта функция не имеет параметров. |
||||||||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
ShowCaret, HideCaret, CreateCaret, DeleteObject |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_SETFOCUS, WM_KILLFOCUS |
|||||||||||||||
Пример |
См. пример для функции CreateCaret. |
||||||||||||||
DestroyCursor • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция DestroyCursor уничтожает неразделяемый курсор, созданный функцией CreateCursor, и освобождает память, занятую курсором. Эта функция не должна применяться для уничтожения курсора, который не был создан функцией CreateCursor. |
||||||||||||||
Синтаксис |
BOOL DestroyCursor( HCURSOR hour ) |
||||||||||||||
Параметры |
|||||||||||||||
hear |
HCURSOR. Курсор, который должен быть уничтожен. Курсор не должен находиться в использовании. |
||||||||||||||
Возвращаемое значение |
BOOL. TRUE, если курсор был уничтожен; в ином случае возвращаемое значение — FALSE. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
CreateCursor, DeleteObject |
||||||||||||||
Пример |
См. пример для функции CreateCursor. |
||||||||||||||
DragDetect • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция DragDetect перехватывает события мыши и следит за ее перемещением до тех пор, пока пользователь не отпустит левую кнопку, не нажмет клавишу Esc или не переместит курсор мыши за пределы прямоугольника перетаскивания, расположенного вокруг указанной точки. Ширина и высота прямоугольника перетаскивания определены значениями SM_CYDRAG и SM_CXDRAG, возвращаемыми функцией GetSystemMetrics. |
||||||||||||||
Синтаксис |
BOOL DragDetect( HWND h Wnd, POINT pt ) |
||||||||||||||
Параметры |
|||||||||||||||
hWnd |
HWND. Дескриптор окна, принимающего ввод от мыши. |
||||||||||||||
Pt |
POINT. Начальная позиция курсора мыши, в экранных координатах. Исходя из значений координат этой точки, функция определяет координаты прямоугольной области перетаскивания. |
||||||||||||||
Возвращаемое значение |
BOOL. Если пользователь переместил мышь за пределы прямоугольной области перетаскивания, удерживая левую кнопку мыши, возвращаемое значение отлично от нуля; в ином случае возвращаемое значение — нуль. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
GetSystemMetrics |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_LBUTTONDOWN, WM_RBUTTONDOWN |
|||||||||||||||
Пример |
В следующем примере отображается окно сообщения, если пользователь нажимает левую кнопку мыши в клиентской области и функция Drag-Detect обнаруживает ситуацию перетаскивания. |
||||||||||||||
LRESULT CALLBACK WndProc( HWND hWhd, UINT uMsg, WPARAM wParam, LPARAM IParam ) { switch ( uMsg ) { case ИМ LBUTTONDOWN : { POINT pt; |
|||||||||||||||
pt.x = MAKEPOINTS( IParam ) .x; pt.y = MAKEPOINTS( IParam ) .y; if ( DragDetect( hWnd, pt ) ) MessageBox( hWnd, "Drag was detected", "DragDetect" , MB OK ) ; } break; |
|||||||||||||||
GetAsyncKeyState • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция GetAsyncKeyState определяет, нажата ли в настоящее время какая-либо клавиша и была ли она нажата после последнего вызова функции GetAsyncKeyState. Эта функция особенно удобна для приложений, в которых для изменения режима работы применяются клавиши с переключением регистра или функциональные клавиши. Например, функция GetAsyncKeyState позволяет определить, нажал ли пользователь функциональную клавишу, прежде чем выбрать пункт меню с помощью мыши. |
||||||||||||||
Синтаксис |
SHORT GetAsyncKeyState( int nVirtKey ) |
||||||||||||||
Параметры |
|||||||||||||||
nVirtKey |
int. Код виртуальной клавиши, соответствующей данной клавише. Полный перечень кодов представлен в табл. 9.3. В Windows 2000 для клавиш смены регистра, управляющих клавиш и клавиш меню можно использовать коды правых и левых виртуальных клавиш для обозначения различий между ними. |
||||||||||||||
Возвращаемое значение |
SHORT. Старший байт равен 1, если клавиша в настоящее время нажата, в ином случае, он равен 0. Младший байт равен 1, если клавиша была нажата с момента последнего вызова функции GetAsyncKeyState, в ином случае, он равен 0. Для выборки этих значений применяются макрокоманды LOBYTE и HIBYTE. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
GetKeyboardState, GetKeyState |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_KEYDOWN, WM_KEYUP |
|||||||||||||||
Пример |
В следующем примере показано текущее состояние клавиш Shift при выборе пункта меню Test!. |
||||||||||||||
См. \local-sources\chap09\09-06.txt |
|||||||||||||||
GetCapture • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция GetCapture выбирает дескриптор окна, которое перехватывает события мыши (если оно имеется). В любой отдельно взятый момент времени события мыши может перехватывать только одно окно; это окно получает ввод от мыши, независимо от того, находится ли курсор в его границах. |
||||||||||||||
Обычно события мыши перехватывают только приложения, в которых мышь используется для рисования или для хранения изображений за пределами экрана. Для поиска окна, в котором происходит перехват событий мыши, применяется функция GetCapture. Найдя такое окно, ему можно отправить сообщение, чтобы оно освободило мышь. Для получения дескриптора окна перехвата, принадлежащего другой нити, применяется функция GetGUIThreadlnfo. |
|||||||||||||||
Синтаксис |
HWND GetCapture( VOID ) |
||||||||||||||
Параметры |
Эта функция не имеет параметров. |
||||||||||||||
Возвращаемое значение |
HWND. Дескриптор окна перехвата, связанного с текущей нитью. Если события мыши не перехватывает ни одно окно в нити, возвращаемое значение — NULL. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
SetCapture, ReleaseCapture, GetGUIThreadlnfo |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_MOUSEMOVE |
|||||||||||||||
Пример |
В следующем примере выполняется вывод имени окна, в котором происходит перехват событий мыши в клиентской области этого окна, каждый раз, когда окно получает сообщение WM_MOUSEMOVE. Когда пользователь выбирает пункт меню Test!, сама программа начинает перехватывать события мыши. Щелчок левой кнопкой мыши освобождает мышь. |
||||||||||||||
См. \local-sources\chap09\09-07.txt |
|||||||||||||||
GetCaretBlinkTime • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция GetCaretBlinkTime возвращает время в миллисекундах между периодическим высвечиванием знака вставки. Эта функция возвращает значение времени, даже если знак вставки является невидимым. |
||||||||||||||
Синтаксис |
UINT GetCaretBlinkTime( VOID ) |
||||||||||||||
Параметры |
Эта функция не имеет параметров. |
||||||||||||||
Возвращаемое значение |
|||||||||||||||
UINT. Период подсветки в миллисекундах. |
|||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
Set Caret BlinkTime, CreateCaret |
||||||||||||||
Пример |
В следующем примере частота мерцания знака вставки замедляется на 0,1 секунды каждый раз, когда пользователь выбирает пункт меню Test!. Частота мерцания восстанавливается к значению 0,5 (500 миллисекунд) при закрытии приложения. Запуск второй копии приводит к исчезновению знака вставки из клиентской области первой программы. Выбор пункта меню Test! в любом экземпляре приложения приводит к замедлению частоты мерцания знака вставки в окне, где он отображается. Изменившаяся частота мерцания остается в силе в любом приложении, которое приобретает знак вставки. Этот пример наглядно показывает, что знак вставки представляет собой ресурс, разделяемый между приложениями и экземплярами. |
||||||||||||||
См. \local-sources\chap09\09-08.txt |
|||||||||||||||
jj GetCaretPos • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
— — ---------- - ^ Функция GetCaretPos копирует позицию знака вставки в клиентских ко- ! ординатах в структуру POINT, на которую указывает параметр IpPoint. В приложении перед использованием функции GetCaretPos необходимо вызвать функцию ShowCaret. Позиция знака вставки всегда дается в клиентских координатах окна, в котором он находится. |
||||||||||||||
Синтаксис |
BOOL GetCaretPos( LPPOINT IpPoint ) |
||||||||||||||
Параметры |
|||||||||||||||
IpPoint |
LPPOINT. Указатель на структуру POINT, которая должна принять значения клиентских координат знака вставки. |
||||||||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
SetCaretPos, CreateCaret |
||||||||||||||
Пример |
В следующем примере знак вставки перемещается на 10 единиц длины вправо каждый раз, когда пользователь выбирает пункт меню Test!. |
||||||||||||||
См. \local-sourcBS\chap09\09-09.txt |
|||||||||||||||
GetClipCursor • Windows 98 • Windows 2000 |
|||||||||||||||
Описание |
Функция GetClipCursor выбирает экранные координаты прямоугольной области, которой ограничен курсор. Курсор — это ресурс, разделяемый между всеми приложениями, работающими в системе. Ограничение курсора какой-то областью на экране с помощью функции ClipCursor является нарушением принципов проектирования Windows, согласно которым ! программы должны быть независимы друг от друга, поэтому следует избегать применения этой функции. |
||||||||||||||
Синтаксис |
BOOL GetCIipCursor( LPRECT IpRect ) |
||||||||||||||
Параметры |
|||||||||||||||
IpRect |
LPRECT. Указатель на структуру RECT, которая должна принять значения экранных координат ограничительной прямоугольной области. Если курсор не ограничен прямоугольной областью, будут выбраны размеры экрана. |
||||||||||||||
Возвращаемое значение |
BOOL. В случае успешного выполнения возвращаемое значение — TRUE; в ином случае возвращаемое значение — FALSE. |
||||||||||||||
Включаемый файл |
winuser.h |
||||||||||||||
См. также |
ClipCursor, GetWindowRect |
||||||||||||||
Соответствующие сообщения |
|||||||||||||||
WM_MOUSEMOVE |
|||||||||||||||
Пример |
В следующем примере (рис. 9.1) курсор мыши ограничен пределами окна приложения. Этот прямоугольник пересчитывается при получении сообщения WM_MOVE или WM_SIZE. Координаты ограничительного прямоугольника отображаются в клиентской области. Выбор пункта меню Test! приводит к временному удалению ограничительного прямоугольника мыши. |
||||||||||||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.