文字列を右寄せや中央揃えで出力(その2)




 文字列を右寄せや中央揃えで出力(その1)で紹介しました SetTextAlign() 関数以外にも同等の動作をする API がありました。

 DrawText() API

 以下のコードをフォームモジュールに貼り付けて実行して見てください。
起動後フォームをクリックするとフォームの縦方向での中央、横方向での中央に"Windows 2000"の文字列が
出力されます。

*----*----*----*----*----*----*----*----*----*

Option Explicit

Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long

Private Const DT_BOTTOM = &H8
Private Const DT_CALCRECT = &H400
Private Const DT_CENTER = &H1
Private Const DT_CHARSTREAM = 4
Private Const DT_DISPFILE = 6
Private Const DT_EDITCONTROL = &H2000
Private Const DT_END_ELLIPSIS = &H8000
Private Const DT_EXPANDTABS = &H40
Private Const DT_EXTERNALLEADING = &H200
Private Const DT_INTERNAL = &H1000
Private Const DT_LEFT = &H0
Private Const DT_METAFILE = 5
Private Const DT_MODIFYSTRING = &H10000
Private Const DT_NOCLIP = &H100
Private Const DT_NOPREFIX = &H800
Private Const DT_PATH_ELLIPSIS = &H4000
Private Const DT_PLOTTER = 0
Private Const DT_RASCAMERA = 3
Private Const DT_RASDISPLAY = 1
Private Const DT_RASPRINTER = 2
Private Const DT_RIGHT = &H2
Private Const DT_RTLREADING = &H20000
Private Const DT_SINGLELINE = &H20
Private Const DT_TABSTOP = &H80
Private Const DT_TOP = &H0
Private Const DT_VCENTER = &H4
Private Const DT_WORD_ELLIPSIS = &H40000
Private Const DT_WORDBREAK = &H10

Private Sub Form_Click()
  Dim dtFlags&, rc As RECT
  GetClientRect Me.hwnd, rc
  dtFlags = DT_CENTER Or DT_SINGLELINE Or DT_VCENTER
  DrawText Me.hdc, "Windows 2000", LenB(StrConv("Windows 2000", vbFromUnicode)), rc, dtFlags
End Sub

*----*----*----*----*----*----*----*----*----*

 このサンプルでは DT_CENTER, DT_VCENTER を指定し縦、横両方向での中央揃えで出力しましたが
他のフォーマットを指定することによりいろんな効果が得られます。
 例えば、
  DT_END_ELLIPSIS:矩形領域内に収まらない末尾を"..."で表現します。
  DT_PATH_ELLIPSIS:矩形領域内に収まるようパス文字列を省略します。
 などです。



動作確認

Windows95 + Visual Basic 5
Windows98 Second Edition + Visual Basic 6


このサンプルを使用しての感想や、質問は 掲示板や、 らくがき帳に書きとめて頂けるとうれしいです。


戻る


インデックスに戻る


G|Cg|C@Amazon Yahoo yV

z[y[W yVoC[UNLIMIT1~] COiq COsI