スクロールバーをフラットスタイルに(T) <TOP>
リストボックス内のスクロールバーをフラット(ENCARTA_MODE・FLAT_MODE)に。
FlatSB_SetScrollPos フラットスクロールバーの位置を設定
FlatSB_SetScrollProp フラットスクロールバーのInitializeFlatSBが呼ばれたかどうかを設定
InitializeFlatSB フラットスクロールバーを初期化
UninitializeFlatSB フラットスクロールバーを初期化しない(標準スクロールバーに戻す)
通常モード
ENCARTA_MODE
FLAT_MODE(スクロールバー上に矢印を持っていくと▲▼およびスライドハンドルの色が変わります)
'================================================================ '= スクロールバーをフラットスタイルに(T)
'= (FlatScrollBar.bas) '================================================================ #include "Windows.bi" ' フラットスクロールバーの位置を設定 Declare Function Api_FlatSB_SetScrollPos& Lib "Comctl32" Alias "FlatSB_SetScrollPos" (ByVal hWnd&, ByVal code&, ByVal nPos&, ByVal fRedraw&) ' フラットスクロールバーのInitializeFlatSBが呼ばれたかどうかを設定 Declare Function Api_FlatSB_SetScrollProp& Lib "Comctl32" Alias "FlatSB_SetScrollProp" (ByVal hWnd&, ByVal index&, ByVal newValue&, ByVal fRedraw&) ' フラットスクロールバーを初期化 Declare Function Api_InitializeFlatSB& Lib "Comctl32" Alias "InitializeFlatSB" (ByVal hWnd&) ' フラットスクロールバーを初期化しない(標準スクロールバーに戻す) Declare Function Api_UninitializeFlatSB& Lib "Comctl32" Alias "UninitializeFlatSB" (ByVal hWnd&) #define WSB_PROP_VSTYLE &H100 '垂直スクロールバーの外観を変える #define FSB_ENCARTA_MODE 1 #define FSB_FLAT_MODE 2 #define FSB_REGULAR_MODE 0 #define SB_VERT 1 Var Shared Mainform As Object Var Shared List1 As Object Var Shared Button1 As Object Var Shared Radio1 As Object Var Shared Radio2 As Object Var Shared Timer1 As Object Mainform.Attach GethWnd List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 Radio1.Attach GetDlgItem("Radio1") : Radio1.SetFontSize 14 Radio2.Attach GetDlgItem("Radio2") : Radio2.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Timer1.Attach GetDlgItem("Timer1") Var Shared Flag As Integer Var Shared sFlag As Integer '================================================================ '= '================================================================ Declare Sub Mainform_Start edecl () Sub Mainform_Start() Var i As Integer Flag = 1 sFlag = 0 List1.Resetcontent For i = 1 To 100 List1.AddString "ListItem" & Right$(Str$(1000 + i),3) Next Timer1.SetInterval 10 Timer1.Enable -1 End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long If Flag = 0 Then Ret = Api_UninitializeFlatSB(List1.GethWnd) Button1.SetWindowText "フラットスタイル" Radio1.EnableWindow -1 Radio2.EnableWindow -1 Else Ret = Api_InitializeFlatSB(List1.GethWnd) If sFlag = 0 Then Ret = Api_FlatSB_SetScrollProp(List1.GethWnd, WSB_PROP_VSTYLE, FSB_ENCARTA_MODE, True) Else Ret = Api_FlatSB_SetScrollProp(List1.GethWnd, WSB_PROP_VSTYLE, FSB_FLAT_MODE, True) End If Button1.SetWindowText "ノーマルスタイル" If Radio1.GetCheck = 0 Then Radio1.EnableWindow 0 If Radio2.GetCheck = 0 Then Radio2.EnableWindow 0 End If Flag = Flag - 1 Flag = Abs(Flag) End Sub '================================================================ '= '================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_timer() Var TopIdx As Long Var Ret As Long TopIdx = List1.GetTopIndex + 1 Ret = Api_FlatSB_SetScrollPos(List1.GethWnd, SB_VERT, TopIdx, True) End Sub '================================================================ '= '================================================================ Declare Sub Radio1_on edecl () Sub Radio1_on() sFlag = 0 End Sub '================================================================ '= '================================================================ Declare Sub Radio2_on edecl () Sub Radio2_on() sFlag = 1 End Sub '================================================================ '= '================================================================ Declare Sub Mainform_QueryClose edecl (Cancel%,ByVal Mode%) Sub Mainform_QueryClose(Cancel%,ByVal Mode%) Var Ret As Long Ret = Api_UninitializeFlatSB(List1.GethWnd) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End