Создание и показ на экране каретки


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

Назад в оглавление темы
На главную страницу темы
Перевод 20.02.2004 13:17 ©Copyright V. Sokovikov
Hosted by uCoz