2.4.2 - Сокрытие каретки

Всякий раз, когда ваша прикладная программа перерисовывает экран при обработке сообщения другого, чем WM_PAINT, она должна сделать каретку невидимой, используя функцию HideCaret. Когда ваша прикладная программа заканчивает прорисовку, она восстанавливает изображение каретки, используя функцию <&&local 18&&>ShowCaret. Если Ваша программа обрабатывает сообщение WM_PAINT, то ей нет необходимости скрывать и восстанавливать изображение каретки, потому что эта функция делает это автоматически.

Следующий пример кода показывает, как вашей прикладной программе скрыть каретку при прорисовке символа на экране и при обработке сообщения WM_CHAR.

HWND hwnd,   // дескриптор окна
HDC hdc;     // контекст устройства

case WM_CHAR: 
switch (wParam) 
{ 
case 0x08: 
	// Обработка клавиши "Backspace" 
	break; 
case 0x09: 
	// Обработка табуляции
	break; 
case 0x0D: 
	// Обработка возврата каретки
	break; 
case 0x1B: 
	// Обработка клавиши "Esc"
	break; 
case 0x0A: 
	// Обработка перевода строки
	break; 
default: 
	// Сокрытие каретки
	HideCaret(hwnd); 
	// Прорисовка символа на экране
	hdc = GetDC(hwnd); 
	SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT)); 
	TextOut(hdc, x, y, lpszChar, 1); 
	ReleaseDC(hwnd, hdc); 
	// Изображение каретки
	ShowCaret(hwnd); 
} 

Если ваша прикладная программа вызывает функцию HideCaret несколько раз без вызова <&&local 18&&>ShowCaret, каретка не будет отображаться на экране до тех пор, пока прикладная программа также не вызовет функцию ShowCaret то же самое число раз.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 04.01.2002