Page 1 sur 1

La taille de la police par defaut

Publié : ven. 31/mars/2006 19:02
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+

Publié : sam. 01/avr./2006 11:58
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

Publié : sam. 01/avr./2006 12:03
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

Publié : sam. 01/avr./2006 12:23
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 :)

Publié : sam. 01/avr./2006 12:33
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.

Publié : sam. 01/avr./2006 12:49
par Dr. Dri
voila une constante, une fonction et une structure qui peuvent t'aider:

Code : Tout sélectionner

#SPI_GETNONCLIENTMETRICS
SystemParametersInfo_()
NONCLIENTMETRICS
Dri ;)

Publié : sam. 01/avr./2006 13:01
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" :)

Publié : sam. 01/avr./2006 13:10
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...

Publié : sam. 01/avr./2006 19:50
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+