タブ文字を含むテキストを出力 <TOP>
タブ文字を含むテキストを出力します。
GetSysColor
システムの背景色を取得
SetBkColor
デバイスコンテキストの背景色を設定
TabbedTextOut
タブ文字を含むテキストを出力する
GetDC
デバイスコンテキストのハンドルを取得
ReleaseDC
デバイスコンテキストを解放
例では、システムの3Dオブジェクト表面色(Buttonの色)を取得し、フォームの色としています。
タブ位置確認のためラインを引いています。
'================================================================ '= タブ文字を含むテキストを出力 '= (TabbedTextOut.bas) '================================================================ #include "Windows.bi" ' システムの背景色を取得 Declare Function Api_GetSysColor& Lib "user32" Alias "GetSysColor" (ByVal nIndex&) ' デバイスコンテキストの背景色を設定 Declare Function Api_SetBkColor& Lib "gdi32" Alias "SetBkColor" (ByVal hDC&, ByVal crColor&) ' タブ文字を含むテキストを出力する Declare Function Api_TabbedTextOut& Lib "user32" Alias "TabbedTextOutA" (ByVal hDC&, ByVal x&, ByVal y&, ByVal lpString$, ByVal nCount&, ByVal nTabPositions&, lpnTabStopPositions&, ByVal nTabOrigin&) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) #define COLOR_BTNFACE 15 '3Dオブジェクトの表面色 Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared hDC As Long '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var BkColor As Long Var Ret As Long 'デバイスコンテキスト取得 hDC = Api_GetDC(GethWnd) 'システムの3Dオブジェクトの表面色取得 BkColor = Api_GetSysColor(COLOR_BTNFACE) '背景色を設定 Ret = Api_SetBkColor(hDC, BkColor) SetBackColor BkColor Cls End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var TabStop(3) As Long Var mStr As String Var Ret As Long 'タブストップを設定 TabStop(0) = 70 TabStop(1) = 130 TabStop(2) = 210 TabStop(3) = 280 '1行目 mStr = "0" & Chr$(9) & Trim$(Str$(TabStop(0))) & Chr$(9) & Trim$(Str$(TabStop(1))) & Chr$(9) & Trim$(Str$(TabStop(2))) & Chr$(9) & Trim$(Str$(TabStop(3))) Ret = Api_TabbedTextOut(hDC, 0, 20, mStr, Len(mStr), 4, TabStop(0), 0) '2行目 mStr = "Tabbed" & Chr$(9) & "Text" & Chr$(9) & "Out" & Chr$(9) & "Width" & Chr$(9) & "Height" Ret = Api_TabbedTextOut(hDC, 0, GetTextHeight(mstr) + 20, mStr, Len(mStr), 4, TabStop(0), 0) For x = 0 To 3 Line(TabStop(x), 0)-(TabStop(x), 140),, 1 Next End Sub '================================================================ '= '================================================================ Declare Sub MainForm_QueryClose edecl () Sub MainForm_QueryClose() Ret = Api_ReleaseDC(GethWnd, hDC) End End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End