Ascunde un semn de omisiune

Ori de câte ori aplicația redesenează un ecran în timp ce prelucrare altele decât un mesaj WM_PAINT, trebuie să semn de omisiune nelegat invizibil utilizând funcția HideCaret . Atunci când cererea dumneavoastră este terminat desen, reafișați semn de omisiune nelegat utilizând funcția ShowCaret . Dacă aplicația procesează mesajul WM_PAINT, nu este necesar pentru a ascunde și afișa din nou semn de omisiune nelegat, deoarece această funcție nu acest lucru în mod automat.

Următoarea mostră de cod arată cum să aibă aplicația ascunde semn de omisiune nelegat, în timp ce tragere un caracter pe ecran și în timp ce mesajul WM_CHAR de prelucrare.

HWND hwnd, / / fereastra ocupa HDC hdc;     / / dispozitiv contextul caz WM_CHAR: switch (wParam) {caz 0x08: / / procesa un backspace. 
             
                pauză; 
 
            caz 0x09: / / procesa o filă.  
             
                pauză; 
 
            caz 0x0D: / / procesa un retur de car. 
             
                pauză; 
 
            caz 0x1B: / / procesa o evadare. 
             
                pauză; 
 
            caz 0x0A: / / procesa o linefeed. 
             
                pauză; 
 
            implicit: / / ascunde semn de omisiune nelegat. 

                HideCaret(hwnd); 
 
                / / Trage caracterul pe ecran. 
 
                HDC = GetDC(hwnd); 
                SelectObject (hdc, GetStockObject(SYSTEM_FIXED_FONT)); 
 
                TextOut (hdc, x, y, lpszChar, 1); 
 
                ReleaseDC (hwnd, hdc); 
 
                / / Afișa semn de omisiune nelegat. 
 
                ShowCaret(hwnd); 
 
        } 

 

Dacă aplicația apelează funcția HideCaret mai multe ori fără apelarea ShowCaret, semn de omisiune nelegat nu vor fi afișate până la aplicarea necesită, de asemenea, ShowCaret același număr de ori.