Win32 API. Каретки

ОГЛАВЛЕНИЕ

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

О каретках

Прикладная программа использует функцию CreateCaret, чтобы установить параметры для каретки. Windows формирует каретку, инвертируя цвет пикселя внутри прямоугольника, определяемого позицией каретки, шириной и высотой. Ширина и высота устанавливаются в логических единицах измерения; следовательно, вид каретки подчинен режиму отображения окна.

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

Прошедшее время, в миллисекундах, требуемых, чтобы инвертировать каретку называется частотой мерцания (blink time). Пользователь может устанавливать частоту мерцания каретки, используя Панель Управления, а прикладные программы должны соблюдать параметры настройки, которые выбрал пользователь. Прикладная программа может определять частоту мерцания каретки, используя функцию GetCaretBlinkTime. Если Вы пишите прикладную программу, которая позволяет пользователю корректировать частоту мерцания, типа апплета Панели Управления, используйте функцию SetCaretBlinkTime, чтобы установить скорость частоты мерцания путем установки числа миллисекунд. Период мерцания (flash time) - затраченное время, в миллисекундах, требуемое, чтобы показать, инвертировать и восстановить изображение каретки. Время мерцания каретки - вдвое больше, чем частота мерцания.

Прикладная программа может определять позицию каретки, используя функцию GetCaretPos. Позиция, в рабочих координатах, копируется в структуру POINT, определяемую параметром в GetCaretPos. Прикладная программа может перемещать каретку в окно, используя функцию SetCaretPos. Окно может перемещать каретку только тогда, если оно уже обладает кареткой. SetCaretPos может перемещать каретку не зависимо от того, является ли она видимой или нет.