Ausblenden ein Caret-Zeichen

Wenn Ihre Anwendung zeichnet einen Bildschirm beim Verarbeiten einer Nachricht als WM_PAINT, es muss die Einfügemarke unsichtbar machen mithilfe der HideCaret -Funktion. Wenn die Anwendung beendet ist Zeichnung, indem Sie die ShowCaret -Funktion die Einfügemarke anzuzeigen. Wenn Ihre Anwendung die WM_PAINT-Nachricht verarbeitet, ist es nicht notwendig, ausblenden und Einblenden der Einfügemarke, weil diese Funktion dies automatisch tut.

Im folgenden Codebeispiel wird veranschaulicht, wie die Anwendung die Einfügemarke beim Zeichnen ein Zeichen auf dem Bildschirm und beim Verarbeiten der Nachricht WM_CHAR ausblenden.

HWND Hwnd, / / Fenster handle HDC Hdc;     / / Gerätekontext Falle WM_CHAR: Switch (wParam) {case 0 x 08: / / Process ein Rückschritt. 
             
                brechen; 
 
            RS 09: / / eine Registerkarte zu verarbeiten.  
             
                brechen; 
 
            Fall 0x0D: / / Process ein Carriage return. 
             
                brechen; 
 
            Fall 0x1B: / / eine Flucht zu verarbeiten. 
             
                brechen; 
 
            Fall 0x0A: / / Process ein Zeilenvorschub. 
             
                brechen; 
 
            Voreinstellung: / / ausblenden die Einfügemarke. 

                HideCaret(hwnd); 
 
                / / Das Zeichen auf dem Bildschirm zu zeichnen. 
 
                HDC = GetDC(hwnd); 
                AuswählenObjekt (Hdc, GetStockObject(SYSTEM_FIXED_FONT)); 
 
                TextOut (Hdc, X, y, LpszChar, 1); 
 
                ReleaseDC (Hwnd, Hdc); 
 
                / / Die Einfügemarke anzuzeigen. 
 
                ShowCaret(hwnd); 
 
        } 

 

Wenn die Anwendung die HideCaret -Funktion mehrmals aufruft ohne ShowCaretaufrufen, wird die Einfügemarke erst angezeigt, wenn die Anwendung auch ShowCaret die gleiche Anzahl von Zeiten Ruft.