文字列を描画(T) <TOP>
CreateFont 指定の属性を持つ論理フォントを作成
TextOut 文字を描画
SelectObject 指定されたデバイスコンテキストのオブジェクトを選択
DeleteObject
論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放
GetDC 指定されたウィンドウのデバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
'================================================================ '= 文字列を描画 '= (CreateFont.bas) '================================================================ #include "Windows.bi" ' 指定の属性を持つ論理フォントを作成 Declare Function Api_CreateFont& Lib "gdi32" Alias "CreateFontA" (ByVal Hei&, ByVal Wid&, ByVal Esc&, ByVal Ori&, ByVal Wei&, ByVal Ita&, ByVal Und&, ByVal Stk&, ByVal Chr&, ByVal Out&, ByVal Clp&, ByVal Qua&, ByVal Pit&, ByVal Face$) ' 文字を描画 Declare Function Api_TextOut& Lib "gdi32" Alias "TextOutA" (ByVal hDC&, ByVal nXStart&, ByVal nYStart&, ByVal lpString$, ByVal cbString&) ' 指定されたウィンドウのデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) ' 指定されたデバイスコンテキストのオブジェクトを選択 Declare Function Api_SelectObject& Lib "gdi32" Alias "SelectObject" (ByVal hDC&, ByVal hObject&) ' 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放 Declare Function Api_DeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject&) #define DEFAULT_CHARSET 1 'デフォルトの文字セット #define FW_BOLD 700 'フォントの線幅 #define FW_DONTCARE 0 'デフォルト Var Shared Picture1 As Object Var Shared Edit1 As Object Var Shared Button1 As Object Picture1.Attach GetDlgItem("Picture1") Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Button1.Attach GetDlgItem("button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub sFontPreview(fSize As Integer, FontName As String, fDig As Integer, fBold As Integer, Top As Single, Left As Single, MyText As String) Sub sFontPreview(fSize As Integer, FontName As String, fDig As Integer, fBold As Integer, Top As Single, Left As Single, MyText As String) Var hDC As Long Var Bold As Long Var ObjhDC1 As Long Var ObjhDC2 As Long Var Ret As Long If fBold = True Then Bold = FW_BOLD Else Bold = FW_DONTCARE End If fDig = 450 'Picture1 のハンドル取得 hDC = Api_GetDC(Picture1.GethWnd) ObjhDC1 = Api_CreateFont(fSize, 10, fDig, fDig, Bold, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, FontName) ObjhDC2 = Api_SelectObject(hDC, ObjhDC1) '表示位置の設定 Ret = Api_TextOut(hDC, Top, Left, MyText$, Len(MyText$)) '元のフォントに戻す Ret = Api_SelectObject(hDC, ObjhDC2) '取得したハンドルを開放(システムリソースを開放する) Ret = Api_DeleteObject(ObjhDC1) Ret = Api_DeleteObject(ObjhDC2) Ret = Api_ReleaseDC(Picture1.GethWnd, hDC) End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var FontName As String FontName = Edit1.GetWindowText sFontPreview 60, FontName, 0, False, 10, 80, "札幌市白石区" End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End