Hi,
ich habe mir nicht die Mühe gemacht den Tipp den Du genommen hast mir anzuschauen, hier der Code den du brauchst .. ging bestimmt schneller ihn gerade zu schreiben... Das ist jetzt aber für den Slider...
diesen Teil in ein Modul kopieren
Option Explicit
Public oldWindowProc As Long
Public hwndSlider As Long
Public hBrush As Long
Private Const WM_USER = &H400&
Private Const GWL_WNDPROC As Long = (-4)
Private Const WM_CTLCOLORSTATIC = &H138
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" ( _
ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal uMsg As Long, ByVal _
wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As _
Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Sub frmSubClass(hWnd As Long)
oldWindowProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub frmUnSubClass(hWnd As Long)
If oldWindowProc Then
SetWindowLong hWnd, GWL_WNDPROC, oldWindowProc
oldWindowProc = 0
End If
End Sub
Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam _
As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_CTLCOLORSTATIC
If lParam = hwndSlider Then
WindowProc = hBrush
Exit Function
End If
End Select
WindowProc = CallWindowProc(oldWindowProc, hWnd, uMsg, wParam, lParam)
End Function
<pre><code>diesen Teil in eine Form und dann einen Slider drauf...
<pre><code>Option Explicit
Private Sub Form_Load()
Call frmSubClass(Me.hWnd)
hBrush = CreateSolidBrush(RGB(255, 0, 0))
hwndSlider = Slider1.hWnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
DeleteObject hBrush
Call frmUnSubClass(Me.hWnd)
End Sub Ich würde Dir vorschalgen, schreibe Dir ein kleines ActiveX wo nur der Slider drauf ist. die relevanten Eigenschaften nach außen durchschleifen und dann noch den Background dazu. Dann haste nicht so viele Probs mit dem Subclassing oder du nimmst halt die DLL die es hier in den Tipps und Tricks gibt. Die haste ja auch wohl schon gefunden ...
Hoffe es hilft.
Gru?
Ralf
|