Condividi tramite


Informazioni sui controlli statici

Le applicazioni usano spesso controlli statici per etichettare altri controlli o per separare un gruppo di controlli. Anche se i controlli statici sono finestre figlio, non possono essere selezionate. Pertanto, non possono ricevere il focus della tastiera e non possono avere un'interfaccia della tastiera. Un controllo statico con lo stile SS_NOTIFY riceve l'input del mouse, notificando alla finestra padre quando l'utente fa clic o fa doppio clic sul controllo. I controlli statici appartengono alla classe finestra STATIC.

Anche se i controlli statici possono essere usati in finestre sovrapposte, pop-up e finestre figlio, sono progettati per l'uso nelle finestre di dialogo, dove il sistema ne standardizza il comportamento. Usando controlli statici all'esterno delle finestre di dialogo, uno sviluppatore aumenta il rischio che l'applicazione si comporti in modo non standard. In genere, uno sviluppatore usa controlli statici nelle finestre di dialogo o usa lo stile SS_OWNERDRAW per creare controlli statici personalizzati.

In questa sezione vengono illustrati gli argomenti seguenti.

Tipi di controllo statici

Esistono quattro tipi di controlli statici. Ogni tipo ha uno o più stili di controllo statici .

Controllo statico semplice della grafica

Un semplice controllo statico grafico visualizza una cornice o un rettangolo riempito. Una cornice può essere disegnata in diversi stili, inclusi nero, grigio o bianco. Inoltre, una cornice può essere disegnata con uno stile di incisione per dargli un aspetto tridimensionale. Gli stili delle cornici includono SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME, SS_ETCHEDHORZ, SS_ETCHEDVERT e SS_ETCHEDFRAME.

Un rettangolo può essere riempito con colore in uno dei tre stili: nero, grigio o bianco. Questi stili sono definiti dalle costanti SS_BLACKRECT, SS_GRAYRECT e SS_WHITERECT.

Gli stili grafici non possono essere combinati.

Controllo statico del testo

Un controllo statico di testo visualizza il testo in un rettangolo in uno di cinque stili:

  • allineato a sinistra senza ritorno a capo automatico
  • allineato a sinistra con ritorno a capo automatico
  • centrato
  • allineato a destra
  • semplice

Questi stili sono definiti rispettivamente dalle costanti SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT e SS_SIMPLE. Il sistema riorganizzerà il testo in questi controlli in modi predefiniti, ad eccezione del testo "semplice", che non viene riorganiato.

Un'applicazione può modificare il testo in un controllo statico di testo in qualsiasi momento usando la funzioneSetWindowTexto il messaggio di WM_SETTEXT.

Il sistema visualizza il maggior numero di testo possibile nel controllo statico e tronca quello che non vi entra. Per calcolare una dimensione appropriata per il controllo, recuperare le metriche del tipo di carattere per il testo. Per altre informazioni sui tipi di carattere e sulle metriche dei tipi di carattere, vedere Tipi di carattere e testo.

Per impostazione predefinita, il testo della finestra per un controllo statico, come per altri controlli, può contenere un simbolo & (ampersand) che definisce il carattere seguente come tasto di scelta rapida per il controllo (o, nel caso della maggior parte dei controlli statici, per il controllo che etichetta, ovvero il controllo successivo nell'ordine di tabulazione). Se si desidera visualizzare l'ampersand nel testo anziché usarlo per definire i tasti di scelta rapida, includere lo stile SS_NOPREFIX.

Controllo statico dell'immagine

Un controllo statico immagine può visualizzare bitmap, icone (incluse le icone animate) o metafile avanzati. Il tipo di elemento grafico visualizzato da un particolare controllo statico dipende dallo stile del controllo: SS_BITMAP, SS_ICON o SS_ENHMETAFILE. Un'applicazione specifica lo stile quando crea il controllo e specifica anche un handle per la bitmap, l'icona o il metafile per il controllo da visualizzare. Dopo aver creato il controllo, un'applicazione può associare un elemento grafico diverso al controllo inviando un messaggio di STM_SETIMAGE, specificando un handle al nuovo oggetto grafico. Un'applicazione può recuperare un handle per l'oggetto grafico attualmente associato a un controllo statico inviando un messaggio STM_GETIMAGE. Un'applicazione invia messaggi a un controllo statico usando la funzione SendDlgItemMessage.

Owner-Drawn controllo statico

Usando lo stile SS_OWNERDRAW, un'applicazione può assumere la responsabilità di disegnare un controllo statico. La finestra padre di un controllo statico gestito dal proprietario riceve un messaggio WM_DRAWITEM ogni volta che il controllo statico deve essere ridisegnato. Il messaggio include un puntatore a una struttura DRAWITEMSTRUCT che contiene informazioni utilizzate dalla finestra proprietaria durante il disegno del controllo.

Gestione messaggi di default per il controllo statico

La routine della finestra per la classe predefinita della finestra di controllo statica esegue l'elaborazione predefinita per tutti i messaggi che la routine di controllo statica non elabora. Quando il controllo statico restituisce false per qualsiasi messaggio, la routine della finestra predefinita controlla i messaggi ed esegue l'azione predefinita descritta nella tabella seguente. Nella tabella un controllo statico di testo è un controllo statico con lo stile SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT o SS_SIMPLE.

Messaggio Azione predefinita
WM_CREATE Carica l'oggetto grafico e ridimensiona la finestra in base alle dimensioni dell'oggetto, per i controlli statici grafici. Non esegue alcuna azione per altri controlli statici.
WM_DESTROY Libera ed elimina tutti gli oggetti grafici, per i controlli statici grafici. Non esegue alcuna azione per altri controlli statici.
WM_ENABLE Ridisegna i controlli statici visibili.
WM_ERASEBKGND Restituisce TRUE, che indica che il controllo cancella lo sfondo.
WM_GETDLGCODE Restituisce DLGC_STATIC.
WM_GETFONT Restituisce un handle al font per i controlli statici di testo.
WM_GETTEXT Restituisce il numero di caratteri copiati.
WM_GETTEXTLENGTH Restituisce la lunghezza, in caratteri, del testo per un controllo statico di testo.
WM_LBUTTONDBLCLK Invia alla finestra padre un codice di notifica STN_DBLCLK se lo stile del controllo è SS_NOTIFY.
WM_LBUTTONDOWN Invia alla finestra padre un codice di notifica STN_CLICKED se lo stile del controllo è SS_NOTIFY.
WM_NCLBUTTONDBLCLK Invia alla finestra padre un codice di notifica STN_DBLCLK se lo stile del controllo è SS_NOTIFY.
WM_NCLBUTTONDOWN Invia alla finestra padre un codice di notifica STN_CLICKED se lo stile del controllo è SS_NOTIFY.
WM_NCHITTEST Restituisce HTCLIENT se lo stile del controllo è SS_NOTIFY; in caso contrario, restituisce HTTRANSPARENT.
WM_PAINT Ridipinge il controllo.
WM_SETFONT Imposta il tipo di carattere e ridisegna i controlli statici del testo.
WM_SETTEXT Imposta il testo e ridipinge i controlli statici del testo.

 

La procedura di finestra predefinita passa tutti gli altri messaggi a DefWindowProc per l'elaborazione predefinita.