TOP > カテゴリ > Visual Basic >

使用できるフォントを列挙する

使用できるフォントを列挙するサンプルです。

サンプルの実行画面

APIの宣言

[EnumFont.bas]

'EnumFonts =>使用できるフォントを列挙する

'<引数>
'hDC:             デバイスコンテキストのハンドル
'lpsz:            フォント名のアドレス
'lpFontEnumProc:  コールバック関数のアドレス
'lParam:          メモリへのポインタ

'@戻り値@
'正常終了0以外

Public Declare Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As Long, ByVal lpsz As String, ByVal lpFontEnumProc As Long, ByVal lParam As Long) As Long


Public Const LF_FACESIZE = 32

Public Const FW_NORMAL = 400
Public Const FW_BOLD = 700

'論理フォント構造体
Public Type LOGFONT
        lfHeight As Long                    'フォントの高さ
        lfWidth As Long                     'フォントの幅
        lfEscapement As Long                '相対的出力角度
        lfOrientation As Long               '回転角度
        lfWeight As Long                    'フォントの線の太さ(定数FW_××)
        lfItalic As Byte                    '斜体の時 1
        lfUnderline As Byte                 '下線付きの時 1
        lfStrikeOut As Byte                 '横線付きの時 1
        lfCharSet As Byte                   '
        lfOutPrecision As Byte              '
        lfClipPrecision As Byte             '
        lfQuality As Byte                   '
        lfPitchAndFamily As Byte            '
        lfFaceName(LF_FACESIZE) As Byte     'フォントの書体名
End Type

'TEXTMETRIC構造体
Type TEXTMETRIC
        tmHeight As Long                        '文字の高さ
        tmAscent As Long                        '
        tmDescent As Long                       '
        tmInternalLeading As Long               '
        tmExternalLeading As Long               '
        tmAveCharWidth As Long                  '平均文字数(通常)
        tmMaxCharWidth As Long                  '最大文字幅
        tmWeight As Long                        'フォントの線の幅(定数FW_××)
        tmOverhang As Long                      '
        tmDigitizedAspectX As Long              '
        tmDigitizedAspectY As Long              '
        tmFirstChar As Byte                     '
        tmLastChar As Byte                      '
        tmDefaultChar As Byte                   '
        tmBreakChar As Byte                     '
        tmItalic As Byte                        '斜体の時 1
        tmUnderlined As Byte                    '下線付きの時 1
        tmStruckOut As Byte                     '横線付きの時 1
        tmPitchAndFamily As Byte                '
        tmCharSet As Byte                       '文字セット
End Type

Public Function FontEnumProc(lpsz As LOGFONT, Metric As TEXTMETRIC, X As Integer, Y As String) As Long

   '文字列を変換してリストに追加
    Form1.List1.AddItem StrConv(lpsz.lfFaceName, 64)
   
   '0以外の数を指定
    FontEnumProc = 1

End Function

APIの呼び出し

[EnumFont.frm]

Private Sub Command1_Click()
   Dim Ret As Long
  
   Ret = EnumFonts(hDC, vbNullString, AddressOf FontEnumProc, ByVal 0&)
         
End Sub

ソースコード一式のダウンロード

vbapi_enumfont.zip 2.27 KB (2,326 バイト)

このサンプルの動作環境について

このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。





関連記事



公開日:2015年03月05日
記事NO:00401