デバイスコンテキストのレイアウトを取得 <TOP>
FindWindow クラス名またはキャプションを与えてウィンドウハンドルを取得
GetLayout デバイスコンテキストのレイアウトを返す
SetLayout デバイスコンテキストのレイアウトを変更
GetDC デバイスコンテキストのハンドルを取得
ReleaseDC デバイスコンテキストを解放
例では、メモ帳を起動後そのデバイスコンテキストにレイアウトを設定し、表示させています。
'================================================================ '= デバイスコンテキストのレイアウトを取得
'= (GetLayout.bas) '================================================================ #include "Windows.bi" ' クラス名またはキャプションを与えてウィンドウのハンドルを取得 Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$) ' デバイスコンテキスト(DC)のレイアウトを返す Declare Function Api_GetLayout& Lib "gdi32" Alias "GetLayout" (ByVal hDC&) ' デバイスコンテキスト(DC)のレイアウトを変更 Declare Function Api_SetLayout& Lib "gdi32" Alias "SetLayout" (ByVal hDC&, ByVal dwLayout&) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) #define LAYOUT_RTL &H1 '既定の水平方向レイアウトを「右から左」に設定 #define LAYOUT_LTR &H2 '既定の水平方向レイアウトを「左から右」に設定 Var Shared Text(1) As Object Var Shared Radio(1) As Object Var Shared Button(1) As Object For i = 0 To 1 Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) : Text(i).SetFontSize 14 Radio(i).Attach GetDlgItem("Radio" & Trim$(Str$(i + 1))) : Radio(i).SetFontSize 14 Button(i).Attach GetDlgItem("Button" & Trim$(Str$(i + 1))) : Button(i).SetFontSize 14 Next '================================================================ '= '================================================================ Declare Function Layout bdecl () As Integer Function Layout() Layout = Val(Mid$(GetDlgRadioSelect("Radio1"), 6)) - 1 End Function '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() 'コマンドボタンを無効に設定 Button(0).EnableWindow 0 'メモ帳を起動 Shell "Notepad.exe" End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var ClassName As String Var Caption As String Var hWnd As Long Var hWinDC As Long Var Flag As Long Var Ret As Long 'クラス名でウィンドウハンドルを取得 ClassName = "Notepad" Caption = "無題 - メモ帳" hWnd = Api_FindWindow(ClassName, Caption) 'ウィンドウハンドルを取得できたときは If hWnd <> 0 Then 'デバイスコンテキストのハンドルを取得 hWinDC = Api_GetDC(hWnd) 'デバイスコンテキストのレイアウトを設定 If Layout = 0 Then Ret = Api_SetLayout(hWinDC, LAYOUT_LTR) Else Ret = Api_SetLayout(hWinDC, LAYOUT_RTL) End If 'デバイスコンテキストのレイアウトを取得 Flag = Api_GetLayout(hWinDC) 'レイアウトを表示 If Flag = LAYOUT_LTR Then Text(1).SetWindowtext "左から右" Else If Flag = LAYOUT_RTL Then Text(1).SetWindowtext "右から左" End If 'デバイスコンテキストを解放 Ret = Api_ReleaseDC(hWnd, hWinDC) End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End