vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Re: scrollen im Datagrid 
Autor: wincnc
Datum: 04.02.05 02:55

' Die benötigten API-Funktionen
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 Msg As Long, _
  ByVal wParam As Long, _
  ByVal lParam As Long) As Long
 
Private Declare Sub CopyMemory Lib "kernel32" _
  Alias "RtlMoveMemory" ( _
  pDst As Any, pSrc As Any, ByVal ByteLen As Long)
 
' Konstante zur Auswertung des Wheel-Events
Private Const MK_CONTROL = &H8  ' (Strg-Taste gedrückt)
Private Const MK_LBUTTON = &H1  ' (linke Maustaste gedrückt)
Private Const MK_RBUTTON = &H2  ' (rechte Maustaste gedrückt)
Private Const MK_MBUTTON = &H10 ' (Wheel gedrückt)
Private Const MK_SHIFT = &H4    ' (Shift-Taste gedrückt)
 
' Konstante für das subclassing
Private Const GWL_WNDPROC = (-4)
Private Const WM_MOUSEWHEEL = &H20A
 
' Merkvariable für die Addresse der Windowprozedur
Private oldWndProc As Long
 
Public Sub SetSubClass(ByVal Hwnd As Long)
  oldWndProc = SetWindowLong(Hwnd, GWL_WNDPROC, _
    AddressOf WndProc)
End Sub
 
Private Function LoWord(ByRef uParam As Long) As Long
  Dim N As Long
 
  N = 0
  CopyMemory ByVal VarPtr(N), ByVal VarPtr(uParam), 2
  LoWord = N
End Function
 
Public Function WndProc(ByVal Hwnd As Long, _
  ByVal uMsg As Long, _
  ByVal wParam As Long, _
  ByVal lParam As Long) As Long
 
  Dim nValue As Long
  Dim nEvent As Long
  Dim x As Long
  Dim y As Long
 
  ' Alle Messages durchlassen bis auf WM_MOUSEWHEEL!
  If uMsg = WM_MOUSEWHEEL Then
    ' Mausrad wurde gedreht!
 
    nValue = HiWord(wParam)
    nEvent = LoWord(wParam)
    x = LoWord(lParam)
    y = HiWord(lParam)
 
    If wParam < 0 Then
     SendKeys "{down}"
    Else
     SendKeys "{up}"
    End If
    Exit Function
  End If
 
  WndProc = CallWindowProc(oldWndProc, Hwnd, uMsg, _
     wParam, ByVal lParam)
End Function
 
Private Function HiWord(ByRef uParam As Long) As Long
  Dim N As Long
 
  N = 0
  CopyMemory ByVal VarPtr(N), ByVal VarPtr(uParam) + 2, 2
  HiWord = N
End Function
 
Public Sub UnSetSubClass(ByVal Hwnd As Long)
  SetWindowLong Hwnd, GWL_WNDPROC, oldWndProc
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
scrollen im Datagrid1.100babedejade03.02.05 03:56
Re: scrollen im Datagrid795wincnc03.02.05 12:30
Re: scrollen im Datagrid712babedejade03.02.05 22:13
Re: scrollen im Datagrid819babedejade03.02.05 23:11
Re: scrollen im Datagrid790babedejade04.02.05 01:26
Re: scrollen im Datagrid1.080wincnc04.02.05 02:55
Re: scrollen im Datagrid916babedejade04.02.05 03:09

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel