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

Описания функции пользовательского ввода

В табл. 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! приводит к временному удалению ограничительного прямоугольника мыши.