Quelle est la fonte utilisée dans MsgBox ?

Résolu
Herve_be Messages postés 957 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2022 - Modifié le 18 sept. 2021 à 10:49
Herve_be Messages postés 957 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2022 - 19 sept. 2021 à 09:14
Bonjour,
Pour les messages simples j'utilise la MsgBox standard de VB6.
Pour les autres j'ai créé ma propre MsgBox en utilisant une form, je voudrais utiliser la même fonte que la MsgBox standard.
Comment savoir quelle fonte elle utilise ?

4 réponses

NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 158
18 sept. 2021 à 12:12
De mémoire la fonte choisie par le système.
0
Herve_be Messages postés 957 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2022 2
18 sept. 2021 à 12:14
Certainement, comment connaître la fonte choisie par le système ?
0
NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 158
18 sept. 2021 à 17:23
C'est la fonte par défaut des contrôles textes.
Tu poses (ou génère dynamiquement) un label, tu ne change pas ses informations de fontes et ensuite en cours de programme tu regarde la fonte qu'il prend.
0
Herve_be Messages postés 957 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2022 2
18 sept. 2021 à 17:34
Je voulais savoir par programme quelle fonte Windows utilise.
entretemps j'ai trouvé : avec SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, NCM, 0)
Il me reste à trouver la taille.
0
Herve_be Messages postés 957 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2022 2
19 sept. 2021 à 09:14
Problème résolu, voici le message avec la MsgBox standard sur la gauche et avec ma MsgBox sur la droite, l'objectif est d'utiliser des boutons personnalisés.


Et le code utilisé
Option Explicit
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Const LOGPIXELSY = 90
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Const SPI_GETNONCLIENTMETRICS = 41
Private Const LF_FACESIZE = 32

Private Type LOGFONT
        lfHeight As Long
        lfWidth As Long
        lfEscapement As Long
        lfOrientation As Long
        lfWeight As Long
        lfItalic As Byte
        lfUnderline As Byte
        lfStrikeOut As Byte
        lfCharSet As Byte
        lfOutPrecision As Byte
        lfClipPrecision As Byte
        lfQuality As Byte
        lfPitchAndFamily As Byte
        lfFaceName(1 To LF_FACESIZE) As Byte
End Type

Private Type NONCLIENTMETRICS
        cbSize As Long
        iBorderWidth As Long
        iScrollWidth As Long
        iScrollHeight As Long
        iCaptionWidth As Long
        iCaptionHeight As Long
        lfCaptionFont As LOGFONT
        iSMCaptionWidth As Long
        iSMCaptionHeight As Long
        lfSMCaptionFont As LOGFONT
        iMenuWidth As Long
        iMenuHeight As Long
        lfMenuFont As LOGFONT
        lfStatusFont As LOGFONT
        lfMessageFont As LOGFONT
End Type

Private Sub Form_Load()
Dim retVal As Long
Dim NCM As NONCLIENTMETRICS
Dim strFontName As String
    NCM.cbSize = Len(NCM)
    retVal = SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, NCM, 0)
    strFontName = StrConv(NCM.lfMessageFont.lfFaceName, vbUnicode)
    Msg.Font.Name = Left(strFontName, InStr(strFontName, Chr(0)) - 1)
    Msg.Font.Size = -((NCM.lfMessageFont.lfHeight * 72) / GetDeviceCaps(hdc, LOGPIXELSY))
End Sub


Commentaires bienvenus.
0