デバイスコンテキストのレイアウトを変更するには

デバイスコンテキストのレイアウトを変更してみます。
キーワードは「SetLayout()関数」です。
SetLayout()関数はデバイスコンテキストのレイアウトを変更してくれます。
標準のレイアウトは「左から右」が基本ですが、「右から左」に変えることができます。
DrawText()関数を使えば、同じようなことはできますが、DrawText()関数は文字だけが影響されますが
SetLayout()関数はBitblt()関数などの関数にも影響できるので非常に便利です。

Windows98以降でSetLayout()関数を使うことができます。
同じX座標に出力した状態





実行時の様子
'デバイスコンテキストのレイアウトを変更する
Private Declare Function SetLayout Lib "gdi32.dll" _
    (ByVal hdc As Long, ByVal dwLayout As Long) As Long
    'dwLayoutの定数
    Private Const LAYOUT_RTL = &H1                          '水平レイアウトを左から右に変更する
    Private Const LAYOUT_BITMAPORIENTATIONPRESERVED = &H8   'BitBlt 関数と StretchBlt 関数で

'ミラーイメージを作成しないようにする Private Sub Command1_Click() With Me.Picture1 Call SetLayout(Me.Picture1.hdc, 0) '0のとき標準 .CurrentX = 10 .CurrentY = 10 Me.Picture1.Print "ノーマルは左端が基準" Call SetLayout(Me.Picture1.hdc, LAYOUT_RTL) 'テキストを右から左へ .CurrentX = 10 .CurrentY = 30 Me.Picture1.Print "レイアウト変更を変更すると右端が基準" End With End Sub
ダウンロード