Win32 API. Каретки
Страница 3. Создание и отображение каретки


Создание и отображение каретки

После приема фокуса клавиатуры, окно должно создать и показывать каретку. Используйте функцию 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);

Альтернативно, Вы можете использовать функцию CreateCaret или CreateDIBitmap, чтобы возвратить дескриптор точечного рисунка каретки. Для получения дополнительной информации о точечных рисунках, см. Точечные рисунки.

Если ваша прикладная программа определяет дескриптор точечного рисунка, CreateCaret игнорирует параметры высоты и ширины. Точечный рисунок определяет размер каретки.

 

 
« Предыдущая статья   Следующая статья »