Sempre que seu aplicativo redesenha a tela ao processamento uma mensagem diferente do WM_PAINT, ele deve fazer o acento circunflexo invisível usando o HideCaret função. Quando seu aplicativo for concluído desenho, exiba novamente o acento circunflexo usando a ShowCaret função. Se seu aplicativo processa a mensagem WM_PAINT, não é necessário ocultar e reexibir o acento circunflexo, porque essa função não faz isso automaticamente.
O exemplo de código a seguir mostra como fazer com que seu aplicativo ocultar o acento circunflexo ao mesmo tempo em que um personagem na tela de desenho e ao processar a mensagem WM_CHAR.
HWND hwnd, / / janela manipular HDC hdc; / / contexto dispositivo case WM_CHAR: interruptor (wParam) {case 0x08: / / processo de um retrocesso.
quebra;
caso 0x09: / / processo de uma guia.
quebra;
caso 0x0D: / / processo de um retorno de carro.
quebra;
caso 0x1B: / / processo de uma fuga.
quebra;
caso 0x0A: / / processo de uma alimentação de linha.
quebra;
padrão: / / ocultar o acento circunflexo.
HideCaret(hwnd);
/ / Desenhar o personagem na tela.
hDC = GetDC(hwnd);
SelectObject (hdc, GetStockObject(SYSTEM_FIXED_FONT));
TextOut (hdc, x, y, lpszChar, 1);
ReleaseDC (hwnd, hdc);
/ / Exibir o cursor.
ShowCaret(hwnd);
}
Se seu aplicativo chama HideCaret função várias vezes sem chamar ShowCaret, o acento circunflexo não será exibido até o aplicativo também chama ShowCaret o mesmo número de vezes.