--- Soumis par Dev Ashish---
Enumération des polices de caractères (fontes) du système.
Note: Pour tester le code de cet article, vous devez avoir également le code pour AddressOf.
Une autre utilisation possible de AddressOf consiste à énumérer les fontes du système via la fonction de l'API: EnumFontFamilies.
Trouvez ici une version modifiée du code disponible en exemple dans le ficher d'aide de VB. Créer une liste sur un nouveau formulaire, puis soit remplir la liste de l'énumération par un appel à FillListWithFonts, soit appler cette dernière depuis la procédure événementielle OnOpen du formulaire ou depuis un OnClick d'un bouton de commande.
Call FillListWithFonts(Me!List0)
'************* Code Start ************** Private Const LF_FACESIZE = 32 Private Const LF_FULLFACESIZE = 64 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(LF_FACESIZE) As Byte End Type Private Type NEWTEXTMETRIC tmHeight As Long tmAscent As Long tmDescent As Long tmInternalLeading As Long tmExternalLeading As Long tmAveCharWidth As Long tmMaxCharWidth As Long tmWeight As Long tmOverhang As Long tmDigitizedAspectX As Long tmDigitizedAspectY As Long tmFirstChar As Byte tmLastChar As Byte tmDefaultChar As Byte tmBreakChar As Byte tmItalic As Byte tmUnderlined As Byte tmStruckOut As Byte tmPitchAndFamily As Byte tmCharSet As Byte ntmFlags As Long ntmSizeEM As Long ntmCellHeight As Long ntmAveWidth As Long End Type ' ntmFlags field flags Private Const NTM_REGULAR = &H40& Private Const NTM_BOLD = &H20& Private Const NTM_ITALIC = &H1& ' tmPitchAndFamily flags Private Const TMPF_FIXED_PITCH = &H1 Private Const TMPF_VECTOR = &H2 Private Const TMPF_DEVICE = &H8 Private Const TMPF_TRUETYPE = &H4 Private Const ELF_VERSION = 0 Private Const ELF_CULTURE_LATIN = 0 ' EnumFonts Masks Private Const RASTER_FONTTYPE = &H1 Private Const DEVICE_FONTTYPE = &H2 Private Const TRUETYPE_FONTTYPE = &H4 Private Declare Function EnumFontFamilies Lib "gdi32" Alias _ "EnumFontFamiliesA" _ (ByVal hDC As Long, _ ByVal lpszFamily As String, _ ByVal lpEnumFontFamProc As Long, _ LParam As Any) _ As Long Private Declare Function GetDC Lib "user32" _ (ByVal hWnd As Long) _ As Long Private Declare Function ReleaseDC Lib "user32" _ (ByVal hWnd As Long, _ ByVal hDC As Long) _ As Long Private Declare Function apiGetFocus Lib "user32" _ Alias "GetFocus" _ () As Long Function fhWnd(ctl As Control) As Long On Error Resume Next ctl.SetFocus If Err Then fhWnd = 0 Else fhWnd = apiGetFocus End If On Error GoTo 0 End Function Function EnumFontFamProc(lpNLF As LOGFONT, _ lpNTM As NEWTEXTMETRIC, _ ByVal FontType As Long, _ LParam As Control) _ As Long Dim FaceName As String Dim FullName As String Dim strOut As String, strFont As String On Error Resume Next FaceName = StrConv(lpNLF.lfFaceName, vbUnicode) strOut = LParam.RowSource strFont = left$(FaceName, InStr(FaceName, vbNullChar) - 1) If strOut = vbNullString Then strOut = strFont Else strOut = strOut & ";" & strFont End If LParam.RowSource = strOut EnumFontFamProc = 1 End Function Sub FillListWithFonts(ctl As Control) Dim hDC As Long hDC = GetDC(fhWnd(ctl)) ctl.RowSource = vbNullString EnumFontFamilies hDC, vbNullString, AddrOf("EnumFontFamProc"), ctl ReleaseDC fhWnd(ctl), hDC End Sub '************* Code End **************