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 selezionati. Pertanto, non possono ricevere lo stato attivo 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, popup e figlio, sono progettate per l'uso nelle finestre di dialogo, in cui il sistema standardizza il proprio 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 grafica semplice
- Controllo statico del testo
- Controllo statico immagine
- Controllo statico disegnato dal proprietario
Controllo statico grafica semplice
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 dei fotogrammi 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
- centrata
- allineata a destra
- simple
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 funzione SetWindowText o il messaggio WM_edizione Standard TTEXT.
Il sistema visualizza tutto il testo possibile nel controllo statico e le clip che non si adattano. 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'e commerciale 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 etichettato, ovvero il controllo successivo nell'ordine di tabulazione). Se si desidera visualizzare e commerciale nel testo anziché usarli per definire i tasti di scelta rapida, includere lo stile SS_NOPREFIX.
Controllo statico 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 STM_edizione Standard TIMAGE, 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 di STM_GETIMAGE . Un'applicazione invia messaggi a un controllo statico usando la funzione SendDlgItemMessage.
Controllo statico disegnato dal proprietario
Usando lo stile SS_OWNERDRAW, un'applicazione può assumere la responsabilità di disegnare un controllo statico. La finestra padre di un controllo statico disegnato dal proprietario (proprietario) riceve un messaggio WM_DRAWITEM ogni volta che è necessario disegnare il controllo statico. Il messaggio include un puntatore a una struttura DRAWITEMSTRUCT che contiene informazioni utilizzate dalla finestra del proprietario durante il disegno del controllo.
Elaborazione dei messaggi predefinita del 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 FAL edizione Standard 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.
Message | Azione predefinita |
---|---|
WM_CREATE | Carica l'oggetto grafico e le dimensioni della finestra 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 | Riavvisita i controlli statici visibili. |
WM_ERAedizione Standard BKGND | Restituisce TRUE, che indica che il controllo cancella lo sfondo. |
WM_GETDLGCODE | Restituisce DLGC_STATIC. |
WM_GETFONT | Restituisce un handle al tipo di carattere 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 | Aggiorna il controllo. |
WM_edizione Standard TFONT | Imposta il tipo di carattere e i ripaint per i controlli statici del testo. |
WM_edizione Standard TTEXT | Imposta il testo e i ripaint per i controlli statici del testo. |
La procedura della finestra predefinita passa tutti gli altri messaggi a DefWindowProc per l'elaborazione predefinita.