システムフォントの情報を取得 <TOP>
TEXTMETRIC構造体から、システムフォントの情報を取得します。
GetTextMetrics フォントに関する情報を取得
GetDesktopWindow デスクトップウィンドウのハンドルを取得
GetWindowDC ウィンドウ全体のデバイスコンテキストを取得
ReleaseDC デバイスコンテキストの解放
SetMapMode 指定のデバイスコンテキストのマッピングモードを指定
'================================================================ '= システムフォント情報を取得
'= (GetTextMetrics.bas) '================================================================ #include "Windows.bi" Type TEXTMETRIC tmHeight As Long 'フォントの高さ(tmAscent+tmDescent) tmAscent As Long 'ベースラインから一番上までの高さ tmDescent As Long 'ベースラインから一番下までの高さ tmInternalLeading As Long 'tmHeightメンバが示す高さに含まれる、上部スペースの高さ tmExternalLeading As Long 'フォントを描画する際の、行同士の幅 tmAveCharWidth As Long 'フォントの平均の幅(イタリック体では超える場合もある) tmMaxCharWidth As Long 'フォントを描画する際に必要な幅(最も広い幅) tmWeight As Long 'フォントの太さ(700以上がBold) tmOverhang As Long '太字やイタリック体などのフォントに付加される幅 tmDigitizedAspectX As Long 'デバイス コンテキストの水平アスペクト値 tmDigitizedAspectY As Long 'デバイス コンテキストの垂直アスペクト値 tmFirstChar As Byte 'フォントに含まれる文字中の、先頭の文字コード tmLastChar As Byte 'フォントに含まれる文字中の、最後の文字コード tmDefaultChar As Byte 'フォントに含まれない文字を描画するための文字コード tmBreakChar As Byte '単語と単語の間を示す文字コード tmItalic As Byte 'フォントがイタリック体のときは0以外の値 tmUnderlined As Byte '下線付きフォントのときは0以外の値 tmStruckOut As Byte '打ち消しフォントのときは0以外の値 tmPitchAndFamily As Byte '下位4ビットにフォントのピッチおよび属性 tmCharSet As Byte 'フォントの文字セット End Type ' フォントに関する情報を取得 Declare Function Api_GetTextMetrics& Lib "gdi32" Alias "GetTextMetricsA" (ByVal hDC&, lpMetrics As TEXTMETRIC) ' Windowsのデスクトップウィンドウを識別。返されるポインタは、一時的なポインタ。後で使用するために保存しておくことはできない Declare Function Api_GetDesktopWindow& Lib "user32" Alias "GetDesktopWindow" () ' ウィンドウ全体のデバイスコンテキストを取得 Declare Function Api_GetWindowDC& Lib "user32" Alias "GetWindowDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) ' 指定のデバイスコンテキストのマッピングモードを設定 Declare Function Api_SetMapMode& Lib "gdi32" Alias "SetMapMode" (ByVal hDC&, ByVal nMapMode&) Var Shared List1 As Object Var Shared Button1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var tm As TEXTMETRIC Var hDC As Long Var hWnd As Long Var PrevMapMode As Long Var txt As String Var Ret As Long 'デスクトップのウィンドウハンドル取得 hWnd = Api_GetDesktopWindow() 'デスクトップのデバイスコンテキスト取得 hDC = Api_GetWindowDC(hWnd) If hDC Then 'マッピングモードをピクセルに設定 PrevMapMode = Api_SetMapMode(hDC, MM_TEXT) 'システムフォントのサイズを取得 Ret = Api_GetTextMetrics(hDC, tm) 'マッピングモードを設定 PrevMapMode = Api_SetMapMode(hDC, PrevMapMode) List1.Resetcontent List1.AddString "tmHeight : " & Str$(tm.tmHeight) List1.AddString "tmAscent : " & Str$(tm.tmAscent) List1.AddString "tmInternalLeading : " & Str$(tmInternalLeading) List1.AddString "tmExternalLeading : " & Str$(tm.tmExternalLeading) List1.AddString "tmAveCharWidth : " & Str$(tm.tmAveCharWidth) List1.AddString "tmMaxCharWidth : " & Str$(tm.tmMaxCharWidth) List1.AddString "tmWeight : " & Str$(tm.tmWeight) List1.AddString "tmOverhang : " & Str$(tm.tmOverhang) List1.AddString "tmDigitizedAspectX : " & Str$(tm.tmDigitizedAspectX) List1.AddString "tmDigitizedAspectY : " & Str$(tm.tmDigitizedAspectY) List1.AddString "tmFirstChar : " & Str$(tm.tmFirstChar) List1.AddString "tmLastChar : " & Str$(tm.tmLastChar) List1.AddString "tmDefaultChar : " & Str$(tm.tmDefaultChar) List1.AddString "tmBreakChar : " & Str$(tm.tmBreakChar) List1.AddString "tmItalic : " & Str$(tm.tmItalic) List1.AddString "tmUnderlined : " & Str$(tm.tmUnderlined) List1.AddString "tmStruckOut : " & Str$(tm.tmStruckOut) List1.AddString "tmPitchAndFamily : " & Str$(tm.tmPitchAndFamily) List1.AddString "tmCharSet : " & Str$(tm.tmCharSet) 'デバイスコンテキストを解放 Ret = Api_ReleaseDC(hWnd, hDC) End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End