スクロールバーを左右入れ替える <TOP>
GetWindowLong 指定されたウィンドウに関しての情報を取得
SetWindowLong 指定されたウィンドウの属性を変更
'================================================================ '= スクロールバーを左右入れ替える '= (SetWindowLong5.bas) '================================================================ #include "Windows.bi" #define GWL_EXSTYLE -20 '拡張ウィンドウスタイル #define WS_EX_RIGHT &H1000 '右揃えされたプロパティを持つウィンドウを作成 #define WS_EX_LEFTSCROLLBAR &H4000 '垂直スクロールバーがクライアント領域の左側に置かれる ' 指定されたウィンドウに関しての情報を取得 Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) ' 指定されたウィンドウの属性を変更 Declare Function Api_SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) Var Shared List1 As Object Var Shared Check1 As Object Var Shared Check2 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 Check1.Attach GetDlgItem("Check1") : Check1.SetFontSize 14 Check2.Attach GetDlgItem("Check2") : Check2.SetFontSize 14 Var Shared glnglpOriginalWndProc As Long Var Shared glngOriginalhWnd As Long '================================================================ '= '================================================================ Declare Sub ListScrollAlign(ByVal Align As Long) Sub ListScrollAlign(ByVal Align As Long) Var nStyle As Long Var Ret As Long Align = Check1.GetCheck nStyle = Api_GetWindowLong(List1.GethWnd, GWL_EXSTYLE) Select Case Align Case 0 nStyle = nStyle And Not WS_EX_LEFTSCROLLBAR Case 1 nStyle = nStyle Or WS_EX_LEFTSCROLLBAR End Select Ret = Api_SetWindowLong(List1.GethWnd, GWL_EXSTYLE, nStyle) End Sub '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var x As Long For x = 0 To 20 List1.AddString Format$(Rnd(1) * 1000000, "#######.#####") Next Check1.SetWindowText "スクロールバー[左]" Check2.SetWindowtext "スクロールバー[右]" End Sub '================================================================ '= '================================================================ Declare Sub Check1_on edecl () Sub Check1_on() Check2.SetCheck 0 ListScrollAlign(Align) End Sub '================================================================ '= '================================================================ Declare Sub Check2_on edecl () Sub Check2_on() Check1.SetCheck 0 ListScrollAlign(Align) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End