La taille de la police par defaut

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

La taille de la police par defaut

Message par Ulix »

Bonjour a tous,

Je désires connaitre la taille de la police par defaut, sans passé par la boite de dialogue. Il existe bien une commande : SelectedFontSize() qui est a utilisé avec la boite de dialogue, mais comment faire sans cette boite ?
Y a t-il une API ? :oops:

Merci d'avance !
A+
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Est-ce que c'est quelque chose comme ça que tu recherches :

Code : Tout sélectionner

hwnd = OpenWindow( 0,0,0,400,200,"Taille de la police par defaut",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CreateGadgetList(hwnd)
TextGadget(0,20,20,200,20,"")
TextGadget(1,20,40,200,20,"")
TextGadget(2,20,60,200,20,"")
Repeat
     Select WaitWindowEvent()
          Case #PB_Event_Repaint
               hDC = StartDrawing(WindowOutput(0))
               currentFont = SendMessage_(GadgetID(1),#WM_GETFONT,0,0)
               GetObject_(currentFont, SizeOf(LOGFONT), @lf.LOGFONT)
               faceName$ = PeekS(@lf\lfFacename)
               faceHeight.l = Round(-lf\lfHeight*72/GetDeviceCaps_(hDC,#LOGPIXELSY),1)
               SetGadgetText(0,faceName$+" : "+Str(faceHeight))
               ;/
               hDC_Gadget = GetDC_(GadgetID(1))
               PrevMapMode = SetMapMode_(hDC_Gadget,#MM_TEXT) 
               GetTextMetrics_(hDC_Gadget,tm.TEXTMETRIC) 
               If PrevMapMode : SetMapMode_(hDC_Gadget,PrevMapMode) : EndIf 
               SetGadgetText(1,"Taille : "+Str(tm\tmHeight)+" pixels")
               ReleaseDC_(GadgetID(1),hDC_Gadget)
               ;/ confirmation du résultat
               hFont = LoadFont(1,faceName$,faceHeight)
               SendMessage_(GadgetID(2),#WM_SETFONT,hFont,#True)
               SetGadgetText(2,"LoadFont(1,"+Chr(34)+faceName$+Chr(34)+","+Str(faceHeight)+")") 
               StopDrawing()
          Case #PB_Event_CloseWindow
               Quit = #True
     EndSelect
Until Quit
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

ou ça
Procedure GetTextHeight(GetTextHeightFontID.l) ; retourne la taille en pixel de la police choisie (Le soldat inconnu)
    Protected Dimension.SIZE, HDC
    HDC = StartDrawing ( ScreenOutput ())
         DrawingFont (GetTextHeightFontID)
         GetTextExtentPoint32_ (HDC, "o" , 1, @Dimension.SIZE)
     StopDrawing ()
     ProcedureReturn Dimension\cy ; *3/4
EndProcedure

Procedure GetTextHeight2(text.s)
     StartDrawing ( ScreenOutput ())
    t = TextHeight(text)
     StopDrawing ()
     ProcedureReturn t
EndProcedure
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Gillou , avec la v4 c'est beaucoup plus simple pour connaître la hauteur d'un texte et surtout c'est multiplateforme , tu peux utiliser la fonction TextHeight() de PureBasic :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message par Ulix »

Merci pour vos petits bout de code :wink:

Ce que je désires connaitrec'est la taille, non pas pixel des caratére, mais la taille de la police (par defaut, ou actuelle).
Il existe bien une commande : SelectedFontSize() qui renvoie la taille de la police selectionné dans la boite de dialogue.

Je cherche l'équivalent; mais sans la boite de dialogue.

Une commande API, voir même une lib ?
Y a t-il une API ? :oops:
Quelqu'un a-til fait une lib sur ce thème, les police et font de caratére ?

Pour l'instant je vais regardé vous code, mais n'hésité pas a m'en proposé d'autre, c'est toujours instructif !

Meci encore.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

voila une constante, une fonction et une structure qui peuvent t'aider:

Code : Tout sélectionner

#SPI_GETNONCLIENTMETRICS
SystemParametersInfo_()
NONCLIENTMETRICS
Dri ;)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Ulix ta citation n'est pas complète
"La théorie c'est quand rien ne marche et qu'on comprend tout, la pratique c'est quand tout fonctionne et que l'on ne sait pas pourquoi."
Albert EINSTEIN

Il manque "et ici on joint la théorie à la pratique, rien ne fonctionne et on ne sait pas pourquoi" :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Ce que je désires connaitrec'est la taille, non pas pixel des caratére, mais la taille de la police
C'est ce que fait mon code, il indique le nom et la taille de la police utilisé pour le gadget n°1 (mais tu peux appliquer ça à n'importe quel gadget), et j'avais rajouté sa taille en pixels au cas où. Alors je ne comprends pas très bien ce que tu cherches...
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message par Ulix »

Merci pour vos réponces, c'est sympa !

Pour Comtois : C'est vrai ma citation n'est pas complete.
C'est parce que j'espére que cette partie ne s'appliquera pas au PureBsic. Tu imagine "rien ne marche" et "ne pas savoir pourquoi" quel galère !
J'espére donc bien que "la théorie à la pratique" ne se réunirront pas... :oops:

Pour Erix14 : c'est tout a fait ce qu'il me faut ! Merci encore de ton aide, je viens de teste ton code, et c'est tout a fait ce que je rechercher.:lol:

A+
Répondre