Операционная система Microsoft Windows 3.1 для программиста -том 1


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


При вводе текста в среде MS-DOS используется текстовый курсор, указывающий позицию ввода очередного символа. Текстовый курсор в MS-DOS формируется автоматически функциями BIOS или создается программой. В последнем случае программа должна сама следить за перемещением текстового курсора.

Если ваше приложение создает свой собственный текстовый редактор (не пользуясь стандартным, который доступен всем приложениям Windows), вы должны сами создать текстовый курсор и заботиться о его внешнем виде, отображении и перемещении.

Заметим, что в операционной системе Windows используются два курсора. Один курсор называется cursor и означает курсор мыши. Второй курсор называется caret (знак вставки) и означает текстовый курсор.

Текстовый курсор является системным ресурсом Windows. Можно создать только один текстовый курсор. И это правильно, так как в противном случае вы, увидев на экране два или больше приглашений для ввода текста, не будете знать, где же будут отображаться вводимые вами при помощи клавиатуры символы.

Как правило, курсор создается окном в момент получения фокуса ввода. Напомним, что при получении фокуса ввода функции окна передается сообщение WM_SETFOCUS. Обработчик этого сообщения может при необходимости создать текстовый курсор.

Когда окно теряет фокус ввода, оно должно уничтожить текстовый курсор. При потере фокуса ввода функции окна передается сообщение WM_KILLFOCUS, обработчик которого и должен удалить текстовый курсор, созданный при обработке сообщения WM_SETFOCUS.

Для создания текстового курсора обработчик сообщения WM_SETFOCUS должен вызвать функцию CreateCaret, входящую в программный интерфейс Windows:

void WINAPI CreateCaret(HWND hwnd, HBITMAP hbmp, int nWidth, int nHeight);

Первый параметр функции (hwnd) - идентификатор окна, создающего текстовый курсор.

Второй параметр (hbmp) может принимать значения NULL, 1 или он может быть идентификатором битового изображения курсора (bitmap). Если этот параметр равен NULL, текстовый курсор представляет собой вертикальную черту черного цвета.


Начало  Назад  Вперед



Книжный магазин