API : probleme avec choosefont()

Résolu
shaolin78 Messages postés 15 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2005 - 12 mai 2005 à 20:41
shaolin78 Messages postés 15 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2005 - 29 mai 2005 à 14:36
bonjour,
voila, je m'explique en qq lignes :


le but du jeu est de pouvoir, dans une application style word (que j'ai créée), changer la police de mon texte.
Jusqu'a present j'arrive à parametrer et afficher la boite de dialogue comme ceci :
j'ai un menu dont l'id est : ID_PREF_POLICE
je traite le cas :


case ID_PREF_POLICE :
police(hWndEdit); // boite de dialogue choix de la police
break;


où hWndEdit est le handle de la fenetre courrante.


plus loin je crée la fonction police() :


void police(HWND hWnd){


CHOOSEFONT cf;
LOGFONT lf;


GetObject (GetStockObject (SYSTEM_FONT), sizeof (lf), &lf) ;


cf.lStructSize = sizeof (CHOOSEFONT) ;
cf.hwndOwner = hWnd ;
cf.hDC = NULL ;
cf.lpLogFont = &lf ;
cf.iPointSize = 0 ;
cf.Flags = CF_INITTOLOGFONTSTRUCT |
CF_SCREENFONTS | CF_EFFECTS ;
cf.rgbColors = 0 ;
cf.lCustData = 0 ;
cf.lpfnHook = NULL ;
cf.lpTemplateName = NULL ;
cf.hInstance = NULL ;
cf.lpszStyle = NULL ;
cf.nFontType = 0 ;
cf.nSizeMin = 0 ;
cf.nSizeMax = 0 ;


ChooseFont(&cf);


}


La boite de dialogue de choix de police apparait, je peux y choisir taille, police,couleur...
mais lorsque je presse ok , rien ne se passe...



J'ai attentivement lu le code http://www.cppfrance.com/code.aspx?ID=9584 kyoko a ce sujet.
Comment et ou utilise t'il la police cree dans hFont ???
j'ai lu dans la doc en 2 min, que il fallait peut etre utiliser un hook... ou appeler la fonction
merci à tout ceux qui auront pris le temps de lire et de me repondre...
toute piste est la bienvenue..


J'avoue ne pas avoir encore vraiment cherché, j'ai lu un peu la doc, sans plus, mais je ne vais pas pouvoir m'y remettre de suite, donc je tente ma chance .. comme je le disais toute piste est la bienvenue

6 réponses

cs_thedestiny Messages postés 56 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 30 juin 2008
12 mai 2005 à 23:11
ChooseFont en fait va te renvoyer les valeurs qui ont été séléctionnées pas l'utilisateur.
Ainsi c'est à toi d'après de faire en sorte que la police soit appliquée.

Il faut que hWndEdit soit défini pour l'ensemble de tes fonctions, et la tu fais
HFONT hFont = CreateFont(cf.iPointSize, 0, 0, 0, 0, cf.nFontType, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,FIXED_PITCH|FF_DONTCARE, cf.lpszStyle);
SendWindowMessage(hWndEdit, WM_SETFONT, (WPARAM)hFont, 0);

Tu places tout ca juste après ChooseFoont(); et ca devrait passer :)
En revanche la couleur ne sera pas affichée, car c'est plus complexe me semble-t'il.

Amicalement,
The Destiny
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 mai 2005 à 23:28
Pour la couleur, autant faire (obligé?) un autre dialog avec ChooseColor, puis utiliser SetColor, moi c'est comme ca que je fais
3
shaolin78 Messages postés 15 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2005
14 mai 2005 à 00:17
merci beaucoup pour votre aide, j'ai reussi grace a vos conseils....;)

je voudrais encore poser une chtite question:

grace au sendMessage j'arrive maintenant a modifier la police mais :

il le fait pour tout le document, comment des lors le faire pour le texte selectionne ou le texte qui sera tapé par la suite et cela seulement... sans modifier toute la page...

un grand merci pour vos explications, ca m'a deja bcp aide...

bien a vous,
[mailto:Sh@o Sh@o]
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 mai 2005 à 00:57
Si tu utilises un EDIT oublies, et utilise un Rich Edit. Avec un Rich Edit, tu doit utiliser EM_SETCHARFORMAT
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shaolin78 Messages postés 15 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2005
14 mai 2005 à 01:02
merci beaucoup de ton aide vecchio56.. je vais tester ca
3
shaolin78 Messages postés 15 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2005
29 mai 2005 à 14:36
le probleme qui se pose maintenant est qu'il n'applique pas la police souhaitee au texte selectionne.
Il me le met en bleu et comme si ct un lien hypertexte, le curseur change en passant dessus....
ou alors il ne fait rien du tout...
0
Rejoignez-nous