После приема фокуса клавиатуры, окно должно создать и показать на экране каретку. Используйте функцию CreateCaret, чтобы создать каретку в данном окне. Вы можете затем вызвать функцию SetCaretPos, чтобы установить текущую позицию каретки и функцию ShowCaret, чтобы сделать каретку видимой.
Система отправляет сообщение WM_SETFOCUS окну, принимающему фокус клавиатуры; поэтому, приложение должно создать и показать на экране каретку при обработке этого сообщения.
Демонстрационный пример
HWND hwnd, // дескриптор окна
int x; // горизонтальная координата курсора
int y; // вертикальная координата курсора
int nWidth; // ширина курсора
int nHeight; // высота курсора
char *lpszChar; // указатель на символ
case WM_SETFOCUS:
// Создаем полностью черную каретку.
CreateCaret(hwnd, (HBITMAP) NULL, nWidth, nHeight);
// Подгоняем позицию каретки, в рабочих координатах.
SetCaretPos(x, y);
// Показываем на экране каретку.
ShowCaret(hwnd);
break;
|
Чтобы создать каретку основанную на точечном рисунке, Вы должны установить дескриптор точечного рисунка при использовании функции CreateCaret. Вы можете использовать прикладную программу работы с графикой, для создания точечного рисунка и компилятор ресурсов, чтобы добавить точечный рисунок к ресурсам вашего приложения. Ваше прикладная программа может затем использовать функцию LoadBitmap, чтобы загрузить дескриптор точечного рисунка. Например, Вы можете заменить строку CreateCaret в предыдущем примере, чтобы создать растровую каретку, на нижеследующие строки.
// Загружаем определяемый программой ресурс каретки.
hCaret = LoadBitmap(hinst, MAKEINTRESOURCE(120));
// Создаем точечный рисунок каретки.
CreateCaret(hwnd, hCaret, 0, 0);
|
Или же, Вы можете использовать функцию CreateBitmap или CreateDIBitmap, чтобы извлечь дескриптор точечного рисунка каретки. Дополнительную информацию о точечных рисунках, см. в главе Точечные рисунки.
Если ваше приложение определяет дескриптор точечного рисунка, функция CreateCaret игнорирует параметры высоты и ширины. Размер каретки устанавливает точечный рисунок.