Page 1 sur 1

Changer la police de messagerequester()

Publié : jeu. 16/juin/2011 10:29
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.

Re: Changer la police de messagerequester()

Publié : jeu. 16/juin/2011 10:51
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)

Re: Changer la police de messagerequester()

Publié : jeu. 16/juin/2011 10:56
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.

Re: Changer la police de messagerequester()

Publié : jeu. 16/juin/2011 11:06
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

Re: Changer la police de messagerequester()

Publié : jeu. 16/juin/2011 11:36
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..

Re: Changer la police de messagerequester()

Publié : ven. 17/juin/2011 10:52
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

Re: Changer la police de messagerequester()

Publié : ven. 17/juin/2011 10:54
par PAPIPP
!!

Re: Changer la police de messagerequester()

Publié : sam. 17/sept./2011 11:00
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.

Re: Changer la police de messagerequester()

Publié : sam. 17/sept./2011 23:59
par Backup
excellent code ! :) merci .

Re: Changer la police de messagerequester()

Publié : dim. 18/sept./2011 3:16
par Kwai chang caine
Amusez vous bien
Coolll !!! avec ça j'ai vu la vie en rose pendant un instant :mrgreen:
Merci 8)