Police, boîte de dialogue

La boîte de dialogue Police permet à l’utilisateur de choisir des attributs pour une police logique, tels que la famille de polices et le style de police associé, la taille de point, les effets (soulignement, barré et couleur de texte) et un script (ou jeu de caractères).

Vous créez et affichez une boîte de dialogue Police en initialisant une structure CHOOSEFONT et en transmettant la structure à la fonction ChooseFont .

La capture d’écran suivante montre une boîte de dialogue Police classique.

capture d’écran montrant la boîte de dialogue police

Si l’utilisateur clique sur le bouton OK , la fonction ChooseFont retourne TRUE et définit les informations sur la sélection de l’utilisateur dans la structure CHOOSEFONT .

Si l’utilisateur annule la boîte de dialogue Police ou si une erreur se produit, ChooseFont retourne FALSE et le contenu de la structure LOGFONT n’est pas défini. Vous pouvez déterminer la cause d’une erreur à l’aide de la fonction CommDlgExtendedError pour récupérer la valeur d’erreur étendue.

Les rubriques suivantes sont traitées dans cette section.

Indicateurs d’initialisation de la boîte de dialogue Police

Avant d’appeler ChooseFont, le membre Indicateurs de la structure CHOOSEFONT doit spécifier CF_SCREENFONTS, CF_PRINTERFONTS ou CF_BOTH, pour indiquer si la boîte de dialogue doit répertorier les polices d’écran, les polices d’imprimante ou les deux. Si vous spécifiez CF_PRINTERFONTS ou CF_BOTH, le membre hDC de la structure CHOOSEFONT doit spécifier un handle pour un contexte de périphérique pour l’imprimante.

Si l’indicateur CF_PRINTERFONTS ou CF_BOTH est défini, l’étiquette de description du type de police apparaît en bas de la boîte de dialogue Police .

À compter de Windows 7, les indicateurs CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTH et CF_WYSIWYG ne sont plus utilisés par la fonction ChooseFont pour l’énumération de polices. Ils sont obsolètes dans Windows 7. Toutefois, l’indicateur CF_PRINTERFONTS conserve une fonction : afficher l’étiquette de description du type de police en bas de la boîte de dialogue Police .

Vous pouvez utiliser le membre Indicateurs pour activer ou désactiver certains contrôles de boîte de dialogue Police, et vous pouvez utiliser le membre Indicateurs conjointement avec d’autres membres CHOOSEFONT pour contrôler les valeurs initiales de certains contrôles.

Pour afficher les contrôles qui permettent à l’utilisateur de sélectionner des options de barré, de soulignement et de couleur :

  • Définissez l’indicateur CF_EFFECTS . Vous pouvez utiliser le membre rgbColors de la structure CHOOSEFONT pour spécifier une couleur de police initiale.

Pour spécifier les valeurs initiales des contrôles de boîte de dialogue Police, Style de police, Taille, Barré et Souligné :

  1. Pour spécifier les valeurs initiales des contrôles de boîte de dialogue Police, Style de police, Taille, Barré et Souligné :
  2. Définissez l’indicateur CF_INITTOLOGFONTSTRUCT dans le membre Flags , ainsi que les membres de la structure LOGFONT vers laquelle pointe lpLogFont, afin de spécifier les valeurs initiales des attributs de police.
  3. Vous pouvez également utiliser les indicateurs CF_NOFACESEL, CF_NOSTYLESEL et CF_NOSIZESEL pour empêcher la boîte de dialogue Police d’afficher les valeurs initiales des contrôles correspondants. Cela est utile lorsque vous travaillez avec une sélection de texte comportant plusieurs polices, styles ou tailles de point. Ces valeurs sont également définies dans Indicateurs lorsque ChooseFont retourne, si l’utilisateur n’a pas sélectionné une valeur correspondante.

Pour initialiser le contrôle Style de police avec un nom de style spécifié

  • Définissez l’indicateur CF_USESTYLE et utilisez le membre lpszStyle pour spécifier le nom du style.

Notes

Pour globaliser votre application, spécifiez le style à l’aide des membres lfWeight et lfItalic de la structure LOGFONT vers laquelle lpLogFont pointe. Le nom du style peut changer en fonction de la langue de l’interface utilisateur système.

 

Pour afficher le bouton Appliquer

  • Définissez l’indicateur CF_APPLY et fournissez une procédure de raccordement pour traiter WM_COMMAND messages pour le bouton Appliquer . La procédure de raccordement peut envoyer le message WM_CHOOSEFONT_GETLOGFONT à la boîte de dialogue pour récupérer l’adresse de la structure LOGFONT qui contient les sélections actuelles pour la police.

Pour afficher le bouton Aide

  • Définissez l’indicateur CF_SHOWHELP . Le membre hwndOwner doit identifier la fenêtre pour recevoir le message inscrit HELPMSGSTRING lorsque l’utilisateur clique sur le bouton Aide .

Pour limiter les polices affichées dans la boîte de dialogue

  • Définissez n’importe quelle combinaison des indicateurs CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLY et CF_WYSIWYG . Vous pouvez également restreindre les styles disponibles que la boîte de dialogue affiche pour certaines polices à l’aide de la valeur CF_NOSIMULATIONS .

À compter de Windows 7, la liste des polices affichées dans la boîte de dialogue est restreinte en fonction des polices affichées par l’utilisateur. Pour supprimer la restriction, définissez l’indicateur CF_INACTIVEFONTS .

Pour restreindre les noms de police, les styles et les tailles de point que l’utilisateur peut spécifier

  1. Définissez l’indicateur CF_FORCEFONTEXIST pour restreindre l’utilisateur à spécifier uniquement des noms de police, des styles et des tailles de point valides répertoriés dans la boîte de dialogue.
  2. Définissez l’indicateur CF_LIMITSIZE pour limiter l’utilisateur à la spécification de tailles de points dans la plage spécifiée par les membres nSizeMin et nSizeMax .

Pour restreindre ou désactiver la zone de liste déroulante Scripts

  • Définissez l’indicateur CF_NOSCRIPTSEL pour désactiver la zone de liste déroulante Scripts , ou définissez l’indicateur CF_SELECTSCRIPT pour limiter les sélections dans la zone de liste déroulante Scripts à un jeu de caractères spécifié.

Personnalisation de la boîte de dialogue Police sur les versions antérieures de Windows

Vous pouvez fournir un modèle personnalisé pour la boîte de dialogue Police , par exemple, si vous souhaitez inclure des contrôles supplémentaires propres à votre application. La fonction ChooseFont utilise votre modèle personnalisé à la place du modèle par défaut.

Pour fournir un modèle personnalisé pour la boîte de dialogue Police

  1. Créez le modèle personnalisé en modifiant le modèle par défaut spécifié dans le fichier Font.dlg. Les identificateurs de contrôle utilisés dans le modèle de boîte de dialogue Police par défaut sont définis dans le fichier Dlgs.h.
  2. Utilisez la structure CHOOSEFONT pour activer le modèle comme suit :
    • Si votre modèle personnalisé est une ressource dans une application ou une bibliothèque de liens dynamiques, définissez l’indicateur CF_ENABLETEMPLATE dans le membre Indicateurs . Utilisez les membres hInstance et lpTemplateName de la structure pour identifier le nom du module et de la ressource.
    • Si votre modèle personnalisé est déjà en mémoire, définissez l’indicateur CF_ENABLETEMPLATEHANDLE . Utilisez le membre hInstance pour identifier l’objet mémoire qui contient le modèle.

Vous pouvez fournir une procédure de raccordement CFHookProc pour la boîte de dialogue Police . La procédure de raccordement peut traiter les messages envoyés à la boîte de dialogue et envoyer des messages à la boîte de dialogue. Si vous utilisez un modèle personnalisé pour définir des contrôles supplémentaires, vous devez fournir une procédure de raccordement pour traiter l’entrée de vos contrôles.

Pour activer une procédure de raccordement pour la boîte de dialogue Police

  1. Définissez l’indicateur CF_ENABLEHOOK dans le membre Flags de la structure CHOOSEFONT .
  2. Spécifiez l’adresse de la procédure de hook dans le membre lpfnHook .

Après avoir traité le message WM_INITDIALOG , la procédure de boîte de dialogue envoie un message WM_INITDIALOG à la procédure de raccordement. Le paramètre lParam de ce message est un pointeur vers la structure CHOOSEFONT utilisée pour initialiser la boîte de dialogue.

La procédure de raccordement peut envoyer les messages WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONT et WM_CHOOSEFONT_SETFLAGS à la boîte de dialogue pour obtenir et définir les valeurs et indicateurs actuels de la boîte de dialogue.

Personnalisation de la boîte de dialogue Police sur Windows 7

La capture d’écran suivante montre une boîte de dialogue Police classique dans Windows 7.

capture d’écran montrant la zone de numérotation de police

Dans les versions antérieures de Windows, le fichier de modèle font.dlg contient un modèle ChooseFont par défaut. Le fichier de modèle font.dlg sur Windows 7 contient deux modèles par défaut : le modèle par défaut des versions antérieures de Windows et le nouveau modèle ChooseFont de Windows 7. Par conséquent, lorsque vous personnalisez la boîte de dialogue Police sur Windows 7, vous devez prendre en compte les problèmes suivants.

  1. Utilisez le nouveau modèle lorsque vous créez des modèles personnalisés pour les applications qui s’exécutent sur Windows 7. Ce nouveau modèle contient un contrôle de lien sur lequel l’utilisateur peut cliquer pour lancer la fenêtre Polices Panneau de configuration, comme illustré dans la capture d’écran suivante.

    capture d’écran montrant le panneau de configuration de police dans windows 7

  2. Pour utiliser ce contrôle de lien, votre application appelante doit utiliser le COMCTL32.DLL version 6 ou ultérieure. Sinon, la fonction ChooseFont retourne une erreur lorsqu’elle tente de créer le contrôle de lien dans votre modèle personnalisé. Pour déterminer si ce contrôle est activé, compilez votre application appelante sur COMCTL32.DLL version 6.0. Pour plus d’informations, consultez Activation des styles visuels avec des contrôles communs.

  3. Si votre application utilise COMCTL32.DLL version 5.0 ou antérieure, vous devez effectuer les opérations suivantes lorsque vous créez un modèle personnalisé :

    • Spécifiez le contrôle en tant que BOUTON PUSHBUTTON. Le contrôle utilisé pour lancer le Panneau de configuration polices s’affiche sous la forme d’un bouton plutôt que d’un lien.

    • Remplacez le texte suivant dans font.dlg :

      CONTROL "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink", WS_TABSTOP, 7, 199, 227, 9

      avec le texte suivant :

      PUSHBUTTON "S&how more fonts", IDC_MANAGE_LINK, 7, 199, 74, 14 , WS_TABSTOP

    • Pour vous assurer que votre application utilise un modèle personnalisé, vous devez spécifier un modèle personnalisé avec l’indicateur CF_ENABLETEMPLATE , créer un modèle personnalisé basé sur le modèle ChooseFont windows 7, puis éventuellement activer une procédure de hook.

      Si vous activez une procédure de hook sans créer de modèle personnalisé, le modèle ChooseFont par défaut pour les versions antérieures de Windows est chargé.

Notes

Vous devez spécifier le type de contrôle CONTROL ou PUSHBUTTON dans votre nouveau modèle, en fonction de la version de COMMCTL.DLL sur laquelle votre application compile. Notez également que les fonctionnalités spécifiques de Windows 7, telles que l’affichage WYSIWYG des listes de polices et des familles étendues, ne sont pas disponibles lorsque vos applications s’exécutent sur des versions antérieures du système d’exploitation Windows.