Страница 4 из 15
Сокрытие каретки Всякий раз, когда ваша прикладная программа перерисовывает экран при обработке сообщения другого, чем WM_PAINT, она должна сделать каретку невидимой, используя функцию HideCaret. Когда ваша прикладная программа заканчивает прорисовку, она восстанавливает изображение каретки, используя функцию 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 несколько раз без вызова ShowCaret, каретка не будет отображаться на экране до тех пор, пока прикладная программа также не вызовет функцию ShowCaret то же самое число раз. |