Win32 API. Каретки
ОГЛАВЛЕНИЕ
О каретках
Прикладная программа использует функцию CreateCaret, чтобы установить параметры для каретки. Windows формирует каретку, инвертируя цвет пикселя внутри прямоугольника, определяемого позицией каретки, шириной и высотой. Ширина и высота устанавливаются в логических единицах измерения; следовательно, вид каретки подчинен режиму отображения окна.
После того, как каретка определена, прикладная программа использует функцию ShowCaret, чтобы сделать каретку видимой. Когда каретка появляется, она автоматически начинает мерцать. Чтобы показывать плотную каретку, Windows инвертирует каждый пиксель в прямоугольнике; чтобы показывать серую каретку, Windows инвертирует каждый второй пиксель; чтобы показывать растровую каретку, Windows инвертирует только белые биты точечного рисунка.
Прошедшее время, в миллисекундах, требуемых, чтобы инвертировать каретку называется частотой мерцания (blink time). Пользователь может устанавливать частоту мерцания каретки, используя Панель Управления, а прикладные программы должны соблюдать параметры настройки, которые выбрал пользователь. Прикладная программа может определять частоту мерцания каретки, используя функцию GetCaretBlinkTime. Если Вы пишите прикладную программу, которая позволяет пользователю корректировать частоту мерцания, типа апплета Панели Управления, используйте функцию SetCaretBlinkTime, чтобы установить скорость частоты мерцания путем установки числа миллисекунд. Период мерцания (flash time) - затраченное время, в миллисекундах, требуемое, чтобы показать, инвертировать и восстановить изображение каретки. Время мерцания каретки - вдвое больше, чем частота мерцания.
Прикладная программа может определять позицию каретки, используя функцию GetCaretPos. Позиция, в рабочих координатах, копируется в структуру POINT, определяемую параметром в GetCaretPos. Прикладная программа может перемещать каретку в окно, используя функцию SetCaretPos. Окно может перемещать каретку только тогда, если оно уже обладает кареткой. SetCaretPos может перемещать каретку не зависимо от того, является ли она видимой или нет.