Changer la police de messagerequester()

Codes specifiques à Windows
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Changer la police de messagerequester()

Message par PAPIPP »

Bonjour à tous
Après quelques recherches voici ce que j’ai trouvé.
Tout d’abord et contrairement à ce que de nombreux forums disent.
Il est possible de modifier toutes les caractéristiques de la police système des messages :
Voici 2 manières manuelles de les réaliser
(ATTENTION ne PRENEZ QUE LES MESSAGES et QU’UNE POLICE PEU EXCENTRIQUE)

1) méthode manuelle sous XP SP3.
Cliquez sur Démarrer
Paramètres
Panneau de configuration
.Affichage
Apparence
Avancé
Sous élément choisissez boite de message
Choisissez la police la taille la couleur Bold (gras ) italique
OK
Appliquer

2) méthode manuelle sous XP SP3
cliquez avec bouton droit de la souris sur le fond du bureau
Choisissez propriétés et ensuite
Apparence
Avancé
Sous élément choisissez boite de message
Choisissez la police la taille la couleur Bold (gras ) italique
OK
Appliquer


Et maintenant modification par prg des caractéristiques de la police de messagerequester()
Pour l’instant je peux modifier la police et toutes ses caractéristiques hormis la couleur.

Code : Tout sélectionner

spinfo.NONCLIENTMETRICS
spinfo\cbSize = SizeOf(spinfo)
SystemParametersInfo_(#SPI_GETNONCLIENTMETRICS,0,@spinfo,0)

Debug "captionfont="+PeekS(@spinfo\lfCaptionFont\lfFaceName[0])+" "+Str(- PeekL(@spinfo\lfCaptionFont\lfHeight) - 3)
Debug "menufont="+PeekS(@spinfo\lfMenuFont\lfFaceName[0])+" "+Str(- PeekL(@spinfo\lfMenuFont\lfHeight) - 3)
Debug "messagefont="+PeekS(@spinfo\lfMessageFont\lfFaceName[0])+" "+Str(- PeekL(@spinfo\lfMessageFont\lfHeight) - 3)

MessageRequester("Essai change font", "1234567890.........."+Chr(10)+"..........1234567890")
For i=0 To 31
 font$+Chr(spinfo\lfCaptionFont\lfFaceName[i])
Next 
Debug font$
;*********************************************************************************************************
;  ci dessous choix  de la police des messages  et de ses  caracteristiques (taille bold italique etc ....
;*********************************************************************************************************
;   #PB_Font_Bold       : Le style de la police est en 'Gras'.
;   #PB_Font_Italic     : Le style de la police est en 'Italique'.
;   #PB_Font_StrikeOut  : Le style de la police est en 'Barré'.
;   #PB_Font_Underline  : Le style de la police est en  'soulignée'
;     "MenuFont.Height    " & CInt(-0.75 * ncm.lfMenuFont.lfHeight)
;     "MenuFont.Weight    " & ncm.lfMenuFont.lfWeight     '400 = Normal, 700 = Bold
;     "MenuFont.Italic    " & ncm.lfMenuFont.lfItalic             '0 = False, 1 = True
;     

res_font=FontRequester("Courier new", 8 ,#PB_FontRequester_Effects )
If res_font
        N_FONT$=SelectedFontName()
        n_taille=SelectedFontSize()
        Debug "style_font = "+Str(SelectedFontStyle())
        Debug n_font$+" "+Str(n_taille)
        Message$ = "Vous avez sélectionné la police suivante :"  + #LF$
        Message$ + "Nom :  " + SelectedFontName()       + #LF$
        Message$ + "Taille :  " + Str(SelectedFontSize())  + #LF$
        Message$ + "Couleur : " + Str(SelectedFontColor()) + #LF$
    If SelectedFontStyle() & #PB_Font_Bold
      Message$ + "Gras" + #LF$
      PokeL(@spinfo\lfMessageFont\lfWeight,700)
      Else
      PokeL(@spinfo\lfMessageFont\lfWeight,400)
    EndIf
    If SelectedFontStyle() & #PB_Font_StrikeOut
      Message$ + "Barré" + #LF$
      PokeB(@spinfo\lfMessageFont\lfStrikeOut,1)
      Else
      PokeB(@spinfo\lfMessageFont\lfStrikeOut,0)
    EndIf
    If SelectedFontStyle() & #PB_Font_Underline
      Message$ + "Souligné" + #LF$
      PokeB(@spinfo\lfMessageFont\lfUnderline,1)
      Else
      PokeB(@spinfo\lfMessageFont\lfUnderline,0)
    EndIf
    If SelectedFontStyle() & #PB_Font_Italic
      Message$ + "Italique" + #LF$
      PokeB(@spinfo\lfMessageFont\lfItalic,1)
      Else
      PokeB(@spinfo\lfMessageFont\lfItalic,0)
    EndIf
  Else
    MessageRequester("FontRequester","La sélection a été annulée.")
    End
EndIf
  MessageRequester("FontRequester pas encore modifiée", Message$, #PB_MessageRequester_Ok)
  l_ntaille=(-n_taille-3) ; taille à modifier pour prise en compte
   
;*********************************************************************************************************
;  ci dessous modification de la police  et de la taille système des messages comme messagebox  messagerequester etc..
;*********************************************************************************************************

PokeS(@spinfo\lfMessageFont\lfFaceName[0],N_font$)
PokeL(@spinfo\lfMessageFont\lfHeight,l_ntaille)

; PokeS(@spinfo\lfMessageFont\lfFaceName[0],PeekS(@spinfo\lfCaptionFont\lfFaceName[0]))

SystemParametersInfo_(#SPI_SETNONCLIENTMETRICS,0,@spinfo,0)

Debug "captionfont="+PeekS(@spinfo\lfCaptionFont\lfFaceName[0])+" "+Str(- PeekL(@spinfo\lfCaptionFont\lfHeight) - 3)
Debug "menufont="+PeekS(@spinfo\lfMenuFont\lfFaceName[0])+" "+Str(- PeekL(@spinfo\lfMenuFont\lfHeight) - 3)
Debug "messagefont="+PeekS(@spinfo\lfMessageFont\lfFaceName[0])+" "+Str(- PeekL(@spinfo\lfMessageFont\lfHeight) - 3)


MessageRequester("Essai change font", "1234567890.........."+Chr(10)+"..........1234567890")
MessageRequester("FontRequester modifiée", Message$, #PB_MessageRequester_Ok)

; Structure LOGFONT
;   lfHeight.l
;   lfWidth.l
;   lfEscapement.l
;   lfOrientation.l
;   lfWeight.l
;   lfItalic.b
;   lfUnderline.b
;   lfStrikeOut.b
;   lfCharSet.b
;   lfOutPrecision.b
;   lfClipPrecision.b
;   lfQuality.b
;   lfPitchAndFamily.b
;   lfFaceName.c[32]
; EndStructure

; Structure NONCLIENTMETRICS
;   cbSize.l
;   iBorderWidth.l
;   iScrollWidth.l
;   iScrollHeight.l
;   iCaptionWidth.l
;   iCaptionHeight.l
;   lfCaptionFont.LOGFONT
;   iSMCaptionWidth.l
;   iSMCaptionHeight.l
;   lfSMCaptionFont.LOGFONT
;   iMenuWidth.l
;   iMenuHeight.l
;   lfMenuFont.LOGFONT
;   lfStatusFont.LOGFONT
;   lfMessageFont.LOGFONT
; EndStructure




Si quelqu’un sait comment modifier la couleur par PRG je suis preneur.
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Changer la police de messagerequester()

Message par Kwai chang caine »

Super cool ton truc
Bon maintenant j'ai des MsgBox tout "zarebi", mais c'est trop cool :lol:

Je suppose que ça reviendra au prochain boot, j'aurais p'tete du noter la police par defaut :roll:

Merci PAPIPP 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Changer la police de messagerequester()

Message par Ar-S »

Merci pour ce code ! ça va faire du bien de modifier un peu ce triste MessageRequester !

par contre, sous 7x64 cela change "définitivement" la font, même aprés avoir fermé le prog, en en créant un autre avec un simple messagerequester(), la font demeure celle qu'on a modifiée. C'est gênant ^^
il faudrait décharger la font lorsque l'on quitte le programme.
~~~~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
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Changer la police de messagerequester()

Message par falsam »

Ar-S a écrit :Merci pour ce code ! ça va faire du bien de modifier un peu ce triste MessageRequester !
Tu peux aussi changer le texte des boutons
http://forums.purebasic.com/english/vie ... 71&start=0
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Changer la police de messagerequester()

Message par Ar-S »

Merci, je change les boutons via setgadgetfont. Par contre je vais tout de même récupérer ces procédures de hook pour modifier les NO YES OK etc..
~~~~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
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Changer la police de messagerequester()

Message par PAPIPP »

Bonjour à tous
Après quelques recherches voici ce que j’ai trouvé pour modifier la couleur du texte sous windows
J'ai listé toutes les options que l'on peut modifier.
(ATTENTION le prg ne corrige que la couleur du texte (en rouge)
si vous désirez modifier d'autres éléments vous le faite sous votre responsabilité
notez les éléments avant de lancer ce prg )

Code : Tout sélectionner

Structure Col
  Val.l
  nom.s{80}
EndStructure
Dim tab_c.col(40)
i=0
tab_c(i)\val= #COLOR_3DDKSHADOW
tab_c(i)\nom="Dark shadow For three-dimensional display elements"
i+1:tab_c(i)\val= #COLOR_3DFACE
i+1:tab_c(i)\val= #COLOR_BTNFACE
tab_c(i)\nom="Face color For three-dimensional display elements"
i+1:tab_c(i)\val= #COLOR_3DHILIGHT 
i+1:tab_c(i)\val=#COLOR_3DHIGHLIGHT
i+1:tab_c(i)\val=#COLOR_BTNHILIGHT
i+1:tab_c(i)\val=#COLOR_BTNHIGHLIGHT
tab_c(i)\nom="Highlight color For three-dimensional display elements (For edges facing the light source.)"
i+1:tab_c(i)\val=#COLOR_3DLIGHT
tab_c(i)\nom="Light color For three-dimensional display elements (For edges facing the light source.)"
i+1:tab_c(i)\val=#COLOR_3DSHADOW
i+1:tab_c(i)\val=#COLOR_BTNSHADOW
tab_c(i)\nom="Shadow color For three-dimensional display elements (For edges facing away from the light source)"
i+1:tab_c(i)\val=#COLOR_ACTIVEBORDER
tab_c(i)\nom="Active window border"
i+1:tab_c(i)\val=#COLOR_ACTIVECAPTION
tab_c(i)\nom="Active window caption"
i+1:tab_c(i)\val=#COLOR_APPWORKSPACE
tab_c(i)\nom="Background color of multiple document Interface (MDI) applications"
i+1:tab_c(i)\val=#COLOR_BACKGROUND
i+1:tab_c(i)\val=#COLOR_DESKTOP
tab_c(i)\nom="Desktop"
i+1:tab_c(i)\val=#COLOR_BTNTEXT
tab_c(i)\nom="Text on PUSH buttons"
i+1:tab_c(i)\val=#COLOR_CAPTIONTEXT
tab_c(i)\nom="Text IN caption, size box, And scroll bar arrow box"
i+1:tab_c(i)\val=#COLOR_GRAYTEXT
tab_c(i)\nom="Grayed (disabled) text. This color is set To 0 "; If the current display driver does Not support a solid gray color.
i+1:tab_c(i)\val=#COLOR_HIGHLIGHT
tab_c(i)\nom="Item(s) selected IN a control"
i+1:tab_c(i)\val=#COLOR_HIGHLIGHTTEXT
tab_c(i)\nom="Text of item(s) selected IN a control"
i+1:tab_c(i)\val=#COLOR_INACTIVEBORDER
tab_c(i)\nom="Inactive window border"
i+1:tab_c(i)\val=#COLOR_INACTIVECAPTION
tab_c(i)\nom="Inactive window caption"
i+1:tab_c(i)\val=#COLOR_INACTIVECAPTIONTEXT
tab_c(i)\nom="Color of text IN an inactive caption"
i+1:tab_c(i)\val=#COLOR_INFOBK
tab_c(i)\nom="Background color For tooltip controls"
i+1:tab_c(i)\val=#COLOR_INFOTEXT
tab_c(i)\nom="Text color For tooltip controls"
i+1:tab_c(i)\val=#COLOR_MENU
tab_c(i)\nom="Menu background"
i+1:tab_c(i)\val=#COLOR_MENUTEXT
tab_c(i)\nom="Text IN menus"
i+1:tab_c(i)\val=#COLOR_SCROLLBAR
tab_c(i)\nom="Scroll bar gray area"
i+1:tab_c(i)\val=#COLOR_WINDOW
tab_c(i)\nom="Window background"
i+1:tab_c(i)\val=#COLOR_WINDOWFRAME
tab_c(i)\nom="Window frame"
i+1:tab_c(i)\val=#COLOR_WINDOWTEXT
tab_c(i)\nom="Text IN windows"
i_max=i:Debug i
For i=0 To i_max
  If tab_c(i)\nom<>""
    mess$=tab_c(i)\nom
  EndIf
  col_e.l=GetSysColor_(tab_c(i)\Val)
  Debug " R="+Str(Red(col_e))+" G="+Str(Green(col_e))+" B="+Str(Blue(col_e))+"=>"+mess$
Next
type.l=#COLOR_WINDOWTEXT
coln.l=RGB(255,0,0) ; couleur rouge
res_s=SetSysColors_(1, @type, @coln)
If res_s=0
err.l=GetLastError_()
Debug str(res_s)+" "+str(err) ; voir liste des erreurs http://msdn.microsoft.com/en-us/library/ms681381%28v=vs.85%29.aspx
EndIf

MessageRequester("Essai change font", "1234567890.........."+Chr(10)+"..........1234567890")


Amusez vous bien
Dernière modification par PAPIPP le ven. 17/juin/2011 10:59, modifié 1 fois.
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Changer la police de messagerequester()

Message par PAPIPP »

!!
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Changer la police de messagerequester()

Message par Geo Trouvpatou »

Ça m'a bien fait flipper ton histoire.
J'viens juste de changer de slip.

Quand je pense que je viens de finir mon prog : MessageRequesterPerso, justement pour ce problème de police.
Enfin pour ma part, j'utilise des images, des sons pour que ça fonctionne sur windows quel que soit les paramétrages.
Sous Linux j'ai dû supprimer les sons parce que ça déconnait et le rendu était horrible.

Ça fait 1 mois que je dois mettre ça en ligne et à chaque fois je pars sur autre chose.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Changer la police de messagerequester()

Message par Backup »

excellent code ! :) merci .
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Changer la police de messagerequester()

Message par Kwai chang caine »

Amusez vous bien
Coolll !!! avec ça j'ai vu la vie en rose pendant un instant :mrgreen:
Merci 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre