I have a frame with a picture within it, and I am able to do the mouse scroll with the code below, but when i scroll with the mouse there are no limits so the picture seems like it could scroll through for eternity. What am I missing? Also with this it diables my scrollbar usage the code for that is below the asterix'.
Option Explicit
Private Const PM_REMOVE = &H1
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Type Msg
hWnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private bCancel As Boolean
Private Const WM_MOUSEWHEEL = 522
'**************************************
Private Sub ProcessMessages()
Dim Message As Msg
Do While Not bCancel
WaitMessage
If PeekMessage(Message, Me.hWnd, WM_MOUSEWHEEL, WM_MOUSEWHEEL, PM_REMOVE) Then
If Message.wParam < 0 Then
Picture1.Top = Picture1.Top + 240 'scrolls up
Else
Picture1.Top = Picture1.Top - 240 'scrolls down
End If
End If
DoEvents
Loop
End Sub
'**************************************
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.Print "Please use mouse wheel To move this Picture."
Me.Show
ProcessMessages
End Sub
Private Sub Form_Unload(Cancel As Integer)
bCancel = True
End Sub
****************************
'also in the Form_load
Picture1.AutoSize = True
Picture1.Top = 0
Picture1.Left = 0
Picture1.Width = fraScrollBox.Width
VScroll1.Top = fraScrollBox.Top
VScroll1.Left = fraScrollBox.Left + fraScrollBox.Width
VScroll1.Height = fraScrollBox.Height
VScroll1.Min = 0
VScroll1.Max = Picture1.Height - fraScrollBox.Height
VScroll1.SmallChange = 1500
VScroll1.LargeChange = 2500
Private Sub VScroll1_Change()
Picture1.Top = VScroll1.Value * -1
End Sub