Trouver la police par défaut et la modifier

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Trouver la police par défaut et la modifier

Message par Le Soldat Inconnu »

Salut,

Un petit code tout simple :

il permet de récupérer la police utiliser par défaut dans les fenêtres et gadgets et de la modifier

En gros, je récupère la police normale et je lui ajoute du gras ou du surlignage ou de l'italique.

Le code :

Code : Tout sélectionner

Procedure.l LoadWindowFont(Bold = -1, Italic = -1, UnderLine = -1)
  Protected ncm.NONCLIENTMETRICS
  ncm\cbSize = SizeOf(NONCLIENTMETRICS)
  SystemParametersInfo_(#SPI_GETNONCLIENTMETRICS, SizeOf(NONCLIENTMETRICS), @ncm, 0)
  If Bold = 0
    ncm\lfMessageFont\lfWeight = 0
  ElseIf Bold = 1
    ncm\lfMessageFont\lfWeight = 700
  EndIf
  If Italic = 0
    ncm\lfMessageFont\lfItalic = 0
  ElseIf Italic = 1
    ncm\lfMessageFont\lfItalic = 1
  EndIf
  If UnderLine = 0
    ncm\lfMessageFont\lfUnderline = 0
  ElseIf UnderLine = 1
    ncm\lfMessageFont\lfUnderline = 1
  EndIf
  
  ProcedureReturn CreateFontIndirect_(@ncm\lfMessageFont)
EndProcedure



; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
  End
EndIf

TextGadget(#PB_Any, 5, 5, 290, 20, "Police utilisée par windows")

FontID_0 = LoadWindowFont()
If FontID_0
  TextGadget(0, 5, 25, 290, 20, "Police normale")
  SetGadgetFont(0, FontID_0)
EndIf

FontID_1 = LoadWindowFont(1, -1, -1)
If FontID_1
  TextGadget(1, 5, 45, 290, 20, "Police en gras")
  SetGadgetFont(1, FontID_1)
EndIf

FontID_2 = LoadWindowFont(-1, 1,1)
If FontID_2
  TextGadget(2, 5, 65, 290, 20, "Police en italique soulignée")
  SetGadgetFont(2, FontID_2)
EndIf

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_Menu
      Select EventMenu() ; Menus
          
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget() ; Gadgets
          
      EndSelect
  EndSelect
  
Until Event = #PB_Event_CloseWindow

; On supprime les polices chargées
If FontID_0
  DeleteObject_(FontID_0)
EndIf
If FontID_1
  DeleteObject_(FontID_1)
EndIf
If FontID_2
  DeleteObject_(FontID_2)
EndIf

End
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Trouver la police par défaut et la modifier

Message par Le Soldat Inconnu »

De même pour la police de la barre de titre

Code : Tout sélectionner

Procedure.l LoadCaptionFont(Bold = -1, Italic = -1, UnderLine = -1)
	Protected ncm.NONCLIENTMETRICS
	ncm\cbSize = SizeOf(NONCLIENTMETRICS)
	SystemParametersInfo_(#SPI_GETNONCLIENTMETRICS, SizeOf(NONCLIENTMETRICS), @ncm, 0)
	If Bold = 0
		ncm\lfCaptionFont\lfWeight = 0
	ElseIf Bold = 1
		ncm\lfCaptionFont\lfWeight = 700
	EndIf
	If Italic = 0
		ncm\lfCaptionFont\lfItalic = 0
	ElseIf Italic = 1
		ncm\lfCaptionFont\lfItalic = 1
	EndIf
	If UnderLine = 0
		ncm\lfCaptionFont\lfUnderline = 0
	ElseIf UnderLine = 1
		ncm\lfCaptionFont\lfUnderline = 1
	EndIf
	
	ProcedureReturn CreateFontIndirect_(@ncm\lfCaptionFont)
EndProcedure


; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
	End
EndIf

FontID_0 = LoadCaptionFont()
If FontID_0
	TextGadget(0, 5, 5, 290, 20, "Police de la barre de titre")
	SetGadgetFont(0, FontID_0)
EndIf

FontID_1 = LoadCaptionFont(0, -1, -1)
If FontID_1
	TextGadget(1, 5, 25, 290, 20, "Police de la barre de titre sans gras")
	SetGadgetFont(1, FontID_1)
EndIf

FontID_2 = LoadCaptionFont(-1, 1, -1)
If FontID_2
	TextGadget(2, 5, 45, 290, 20, "Police de la barre de titre en italique")
	SetGadgetFont(2, FontID_2)
EndIf

Repeat
	Event = WaitWindowEvent()
	
	Select Event
		Case #PB_Event_Menu
			Select EventMenu() ; Menus
					
			EndSelect
			
		Case #PB_Event_Gadget
			Select EventGadget() ; Gadgets
					
			EndSelect
	EndSelect
	
Until Event = #PB_Event_CloseWindow

; On supprime les polices chargées
If FontID_0
	DeleteObject_(FontID_0)
EndIf
If FontID_1
	DeleteObject_(FontID_1)
EndIf
If FontID_2
	DeleteObject_(FontID_2)
EndIf

End
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Trouver la police par défaut et la modifier

Message par Ar-S »

J'ai testé en vitesse les 2 codes, ils donnent le même résultat.
la barre des titres ne change pas, y'a pas de setwindowtitle() .
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Trouver la police par défaut et la modifier

Message par Le Soldat Inconnu »

9a ne change le texte de la barre de titre, ça récupère la FONT de la barre de titre et ça permet de la personnaliser
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Trouver la police par défaut et la modifier

Message par Mesa »

J'aimerais savoir pourquoi "Police utilisée par windows" et "Police normale" (dans le 1er post) ne sont pas les mêmes ?

Mesa.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Trouver la police par défaut et la modifier

Message par Le Soldat Inconnu »

tiens oui, sous 7, ça ne fonctionne pas correctement :oops: je zieute
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Trouver la police par défaut et la modifier

Message par Mesa »

C'est à Fred de répondre, je pense, non ?

Mesa.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Trouver la police par défaut et la modifier

Message par Le Soldat Inconnu »

Non, ça retourne un nom de police bizarre sous 7, je ne comprends pas pourquoi
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre