- 題名: 垂直スクロールバーの背景色の設定
- 日時: 2004/07/27 19:19:42
- ID: 5149
- この記事の返信元:
- (なし)
- この記事への返信:
- [5271] Re[1]: 垂直スクロールバーの背景色の設定2004/08/02 3:46:20
- ツリーを表示
■No5274に返信(平ちゃんさんの記事) 平ちゃんさん、こんにちは。深山と申します。 然して必要ではなかったのかも知れませんが、興味があったので調べてみました。 スクロールバーから親ウィンドウに通知される WM_CTLCOLORSCROLLBAR メッセージを トラップすることで背景色の変更が出来るようです。 # ただ、 HTML のスタイルシートのような細かい制御は出来ないようです。 WM_CTLCOLORSCROLLBAR Notification http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarmessages/wm_ctlcolorscrollbar.asp 簡単なサンプルを作成してみたので、よろしければ参考にして下さいな。 # なお、このサンプルを作成するにあたって、以下のサイト及び書込みを参考にさせて頂きました。 第14章 スクロールバー http://homepage2.nifty.com/Mr_XRAY/Halbow/Chap14.html [AB3] エディットコントロールの色変更 http://dbp.cool.ne.jp/patio/patio.cgi?mode=view&no=158 Private Const WM_CREATE As Int32 = &H1 Private Const WM_DESTROY As Int32 = &H2 Private Const WM_CTLCOLORSCROLLBAR As Int32 = &H137 <System.Runtime.InteropServices.DllImport("Gdi32.dll")> _ Private Shared Function CreateSolidBrush(ByVal crColor As Int32) As IntPtr End Function <System.Runtime.InteropServices.DllImport("Gdi32.dll")> _ Private Shared Function DeleteObject(ByVal hObject As IntPtr) As Boolean End Function Private hBrush As IntPtr Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) Select Case m.Msg Case WM_CREATE hBrush = CreateSolidBrush(&HFF0000) Case WM_DESTROY DeleteObject(hBrush) Case WM_CTLCOLORSCROLLBAR If m.LParam.Equals(VScrollBar1.Handle) Then m.Result = hBrush Return End If End Select MyBase.WndProc(m) End Sub # 少しだけ補足(蛇足?) # CreateSolidBrush の引数は COLORREF で、 RGB 値の並びは 0x00bbggrr となっています。 # 一方 Color.ToArgb メソッドで得られる値は 0xaarrggbb ですので、コーディングの際には # 注意が必要です。<いや、自分が最初それで失敗したというだけなのですけど(汗) COLORREF http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/colors_9xiq.asp Color.ToArgb メソッド http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDrawingColorClassToArgbTopic.asp
分類:[.NET]
いつもお世話様です。
VB.NET 初心者の質問です。
垂直スクロールバーの背景色を設定する方法を教えてください。
垂直スクロールバーをフォームに貼り付けてコードを書いたのですが背景色が変わりません。
VScrollBar1.BackColor = Color.Blue
念のため
VScrollBar1.ForeColor = Color.Blue
ともしましたが背景色は元のままです。
他に設定する必要のあるプロパティ等があるのでしょうか。
すみませんがお願いします。