レイアウトを変更 <TOP>
SetLayout デバイスコンテキスト(DC)のレイアウトを変更
GetLayout デバイスコンテキスト(DC)のレイアウトを返す
TextOut 文字を描画
GetDC デバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
SetBkMode バックグラウンドの塗りつぶしモード設定
'================================================================ '= レイアウトを変更 '= (SetLayout.bas) '================================================================ #include "Windows.bi" ' デバイスコンテキスト(DC)のレイアウトを変更 Declare Function Api_SetLayout& Lib "gdi32" Alias "SetLayout" (ByVal hDC&, ByVal dwLayout&) ' デバイスコンテキスト(DC)のレイアウトを返す Declare Function Api_GetLayout& Lib "gdi32" Alias "GetLayout" (ByVal hDC&) ' 文字を描画 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_SetBkMode& Lib "gdi32" Alias "SetBkMode" (ByVal hDC&, ByVal iBkMode&) #define TRANSPARENT 1 '背景色を設定しない #define LAYOUT_LTR &H2 '既定の水平方向レイアウトを「左から右」に設定 #define LAYOUT_RTL &H1 '既定の水平方向レイアウトを「右から左」に設定 '================================================================ '= '================================================================ Declare Sub MainForm_Resize edecl () Sub MainForm_Resize() Var hDC As Long Var txt As String Var Ret As Long hDC = Api_GetDC(GethWnd) Ret = Api_SetBkMode(hDC, TRANSPARENT) txt = "LAYOUT_RTL" Ret = Api_SetLayout(hDC, LAYOUT_RTL) Ret = Api_TextOut(hDC, 0, 30, txt, Len(txt)) txt = "LAYOUT_LTR" Ret = Api_SetLayout(hDC, LAYOUT_LTR) Ret = Api_TextOut(hDC, 0, 46, txt, Len(txt)) Ret = Api_ReleaseDC(GethWnd, hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End