Finestra di dialogo Tipo di carattere
La finestra di dialogo Carattere consente all'utente di scegliere attributi per un tipo di carattere logico, ad esempio famiglia di caratteri e stile di carattere associato, dimensioni del punto, effetti (sottolineatura, barratura e colore di testo) e uno script (o set di caratteri).
Si crea e viene visualizzata una finestra di dialogo Carattere inizializzando una struttura CHOOSEFONT e passando la struttura alla funzione ChooseFont .
La schermata seguente mostra una finestra di dialogo carattere tipica.
Se l'utente fa clic sul pulsante OK , la funzione ChooseFont restituisce TRUE e imposta le informazioni sulla selezione dell'utente nella struttura CHOOSEFONT .
Se l'utente annulla la finestra di dialogo Carattere o si verifica un errore, ChooseFont restituisce FALSE e il contenuto della struttura LOGFONT non viene definito. È possibile determinare la causa di un errore usando la funzione CommDlgExtendedError per recuperare il valore di errore esteso.
Gli argomenti seguenti vengono illustrati in questa sezione.
- Flag di inizializzazione della finestra di dialogo Carattere
- Personalizzazione della finestra di dialogo Carattere nelle versioni precedenti di Windows
- Personalizzazione della finestra di dialogo Carattere in Windows 7
Flag di inizializzazione della finestra di dialogo Carattere
Prima di chiamare ChooseFont, il membro Flag della struttura CHOOSEFONT deve specificare CF_SCREENFONTS, CF_PRINTERFONTS o CF_BOTH, per indicare se la finestra di dialogo deve elencare tipi di carattere dello schermo, tipi di carattere della stampante o entrambi. Se si specifica CF_PRINTERFONTS o CF_BOTH, il membro hDC della struttura CHOOSEFONT deve specificare un handle in un contesto di dispositivo per la stampante.
Se il flag CF_PRINTERFONTS o CF_BOTH è impostato, l'etichetta di descrizione del tipo di carattere viene visualizzata nella parte inferiore della finestra di dialogo Carattere .
A partire da Windows 7, i flag CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTH e CF_WYSIWYG flag non vengono più usati dalla funzione ChooseFont per l'enumerazione del tipo di carattere. Sono obsoleti in Windows 7. Tuttavia, il flag di CF_PRINTERFONTS mantiene una funzione: per visualizzare l'etichetta di descrizione del tipo di carattere nella parte inferiore della finestra di dialogo Carattere .
È possibile usare il membro Flags per abilitare o disabilitare alcuni dei controlli della finestra di dialogo Tipo di carattere e usare il membro Flags insieme ad altri membri CHOOSEFONT per controllare i valori iniziali di alcuni controlli.
Per visualizzare i controlli che consentono all'utente di selezionare strikeout, sottolineatura e opzioni di colore:
- Impostare il flag di CF_EFFECTS . È possibile usare il membro rgbColors della struttura CHOOSEFONT per specificare un colore del carattere iniziale.
Per specificare i valori iniziali per i controlli Tipo di carattere, Stile carattere, Dimensioni, Strikeout e Sottolineatura:
- Per specificare i valori iniziali per i controlli Tipo di carattere, Stile carattere, Dimensioni, Strikeout e Sottolineatura:
- Impostare il flag CF_INITTOLOGFONTSTRUCT nel membro Flags , insieme ai membri della struttura LOGFONT a cui punta lpLogFont, per specificare i valori iniziali per gli attributi del tipo di carattere.
- È anche possibile usare i flag CF_NOFACESEL, CF_NOSTYLESEL e CF_NOSIZESEL per impedire alla finestra di dialogo Carattere di visualizzare i valori iniziali per i controlli corrispondenti. Questo è utile quando si lavora con una selezione di testo con più caratteri di tipo, stile o dimensioni del punto. Questi valori verranno impostati anche in Flag quando ChooseFont restituisce, se l'utente non ha selezionato un valore corrispondente.
Per inizializzare il controllo Stile carattere in un nome di stile specificato
- Impostare il flag CF_USESTYLE e usare il membro lpszStyle per specificare il nome dello stile.
Nota
Per globalizzare l'applicazione, specificare lo stile usando i membri lfWeight elfItalic della struttura LOGFONT a cui punta lpLogFont. Il nome dello stile può cambiare a seconda della lingua dell'interfaccia utente di sistema.
Per visualizzare il pulsante Applica
- Impostare il flag CF_APPLY e fornire una procedura di hook per elaborare i messaggi WM_COMMAND per il pulsante Applica . La procedura di hook può inviare il messaggio di WM_CHOOSEFONT_GETLOGFONT alla finestra di dialogo per recuperare l'indirizzo della struttura LOGFONT che contiene le selezioni correnti per il tipo di carattere.
Per visualizzare il pulsante Della Guida
- Impostare il flag di CF_SHOWHELP . Il membro hwndOwner deve identificare la finestra per ricevere il messaggio registrato HELPMSGSTRING quando l'utente fa clic sul pulsante Guida .
Per limitare i tipi di carattere visualizzati nella finestra di dialogo
- Impostare qualsiasi combinazione dei flag di CF_TTONLY, CF_FIXEDPITCHONLY,CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLY e CF_WYSIWYG. È anche possibile limitare gli stili disponibili visualizzati dalla finestra di dialogo per alcuni tipi di carattere usando il valore CF_NOSIMULATIONS .
A partire da Windows 7, l'elenco dei tipi di carattere visualizzati nella finestra di dialogo è limitato in base ai tipi di carattere visualizzati dall'utente. Per rimuovere la restrizione, impostare il flag di CF_INACTIVEFONTS .
Per limitare i nomi, gli stili e le dimensioni del punto che l'utente può specificare
- Impostare il flag CF_FORCEFONTEXIST per limitare l'utente a specificare solo nomi di caratteri di tipo, stili e dimensioni dei punti validi elencati nella finestra di dialogo.
- Impostare il flag di CF_LIMITSIZE per limitare l'utente a specificare le dimensioni dei punti nell'intervallo specificato dai membri nSizeMin e nSizeMax.
Per limitare o disabilitare la casella combinata Script
- Impostare il flag CF_NOSCRIPTSEL per disabilitare la casella combinata Script o impostare il flag di CF_SELECTSCRIPT per limitare le selezioni nella casella combinata Script su un set di caratteri specificato.
Personalizzazione della finestra di dialogo Carattere nelle versioni precedenti di Windows
È possibile specificare un modello personalizzato per la finestra di dialogo Carattere , ad esempio se si desidera includere controlli aggiuntivi univoci per l'applicazione. La funzione ChooseFont usa il modello personalizzato al posto del modello predefinito.
Per specificare un modello personalizzato per la finestra di dialogo Carattere
- Creare il modello personalizzato modificando il modello predefinito specificato nel file Font.dlg. Gli identificatori di controllo usati nel modello di dialogo Carattere predefinito sono definiti nel file Dlgs.h.
- Usare la struttura CHOOSEFONT per abilitare il modello come indicato di seguito:
- Se il modello personalizzato è una risorsa in un'applicazione o in una libreria di collegamenti dinamici, impostare il flag di CF_ENABLETEMPLATE nel membro Flags . Usare i membri hInstance e lpTemplateName della struttura per identificare il modulo e il nome della risorsa.
- Se il modello personalizzato è già in memoria, impostare il flag di CF_ENABLETEMPLATEHANDLE . Usare il membro hInstance per identificare l'oggetto memoria che contiene il modello.
È possibile fornire una procedura di hook CFHookProc per la finestra di dialogo Carattere . La procedura di hook può elaborare i messaggi inviati alla finestra di dialogo e inviare messaggi alla finestra di dialogo. Se si usa un modello personalizzato per definire controlli aggiuntivi, è necessario fornire una procedura di hook per elaborare l'input per i controlli.
Per abilitare una procedura di hook per la finestra di dialogo Carattere
- Impostare il flag CF_ENABLEHOOK nel membro Flag della struttura CHOOSEFONT .
- Specificare l'indirizzo della routine hook nel membro lpfnHook .
Dopo l'elaborazione del messaggio WM_INITDIALOG , la procedura della finestra di dialogo invia un messaggio WM_INITDIALOG alla procedura di hook. Il parametro lParam di questo messaggio è un puntatore alla struttura CHOOSEFONT usata per inizializzare la finestra di dialogo.
La procedura di hook può inviare i messaggi WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONT e WM_CHOOSEFONT_SETFLAGS alla finestra di dialogo per ottenere e impostare i valori e i flag correnti della finestra di dialogo.
Personalizzazione della finestra di dialogo Carattere in Windows 7
La schermata seguente mostra una tipica finestra di dialogo Carattere in Windows 7.
Nelle versioni precedenti di Windows il file modello font.dlg contiene un modello ChooseFont predefinito. Il file di modello font.dlg in Windows 7 contiene due modelli predefiniti: il modello predefinito delle versioni precedenti di Windows e il nuovo modello ScegliFont di Windows 7. Pertanto, quando si personalizza la finestra di dialogo Carattere in Windows 7, è necessario considerare i problemi seguenti.
Usare il nuovo modello quando si creano modelli personalizzati per le applicazioni eseguite in Windows 7. Questo nuovo modello contiene un controllo di collegamento che l'utente può fare clic per avviare la finestra Font Pannello di controllo, come illustrato nella schermata seguente.
Per usare questo controllo di collegamento, l'applicazione chiamante deve usare la COMCTL32.DLL versione 6 o successiva. In caso contrario, la funzione ChooseFont restituisce un errore quando tenta di creare il controllo collegamento nel modello personalizzato. Per determinare se questo controllo è abilitato, compilare l'applicazione chiamante in COMCTL32.DLL versione 6.0. Per altre informazioni, vedere Abilitazione degli stili visivi con controlli comuni.
Se l'applicazione usa COMCTL32.DLL versione 5.0 o precedente, è necessario eseguire le operazioni seguenti quando si crea un modello personalizzato:
Specificare il controllo come PUSHBUTTON. Il controllo usato per avviare il Pannello di controllo font verrà visualizzato come pulsante anziché come collegamento.
Sostituire il testo seguente nel font.dlg:
CONTROL "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink", WS_TABSTOP, 7, 199, 227, 9
con il testo seguente:
PUSHBUTTON "S&how more fonts", IDC_MANAGE_LINK, 7, 199, 74, 14 , WS_TABSTOP
Per assicurarsi che l'applicazione usi un modello personalizzato, è necessario specificare un modello personalizzato con il flag CF_ENABLETEMPLATE , creare un modello personalizzato basato sul modello ChooseFont di Windows 7 e quindi abilitare facoltativamente una procedura di hook.
Se si abilita una procedura di hook senza creare un modello personalizzato, verrà caricato il modello ChooseFont predefinito per le versioni precedenti di Windows.
Nota
È necessario specificare il tipo di controllo CONTROL o PUSHBUTTON nel nuovo modello, a seconda della versione di COMMCTL.DLL in cui l'applicazione viene compilata. Si noti anche che le funzionalità specifiche di Windows 7, ad esempio la visualizzazione WYSIWYG di elenchi di caratteri e famiglie estese, non sono disponibili quando le applicazioni vengono eseguite nelle versioni precedenti del sistema operativo Windows.