コントロール内にて Public Class コントロール Inherits System.Windows.Forms.UserControl ・ ・ ・ Protected Overrides Sub WndProc(ByRef msg As Message) Const WM_VSCROLL As Integer = &H115I If msg.Msg = WM_VSCROLL Then _HookMouseScroll(msg) End If MyBase.WndProc(msg) End Sub Private Sub _HookMouseScroll(ByRef inMsg As Message) Dim wObj as ??????? wObj = CType(inMsg.GetLParam(wObj.GetType), ???????) End Sub End Class
Private Sub _HookMouseScroll(ByRef inMsg As Message) Dim wPosition As Point = Me.AutoScrollPosition Debug.WriteLine("pos=" & wPosition.ToString) End Sub
分類:[.NET]
どぼんさんには、いつもお世話になっております。
コントロールにAutoScroll=trueでスクロールをつけた場合ですが、
このスクロールイベントは、VBでは捕捉できますが、.netでは捕捉できなくなっています。(間違いがありましたら、ご指摘ください。)
しかしながら、スクロール後のコントロール表示位置の補正を行う必要が生じ、現在、以下のロジックでスクロールイベントを捕捉しています。
コントロール内にて
Public Class コントロール
Inherits System.Windows.Forms.UserControl
・
・
・
Protected Overrides Sub WndProc(ByRef msg As Message)
Const WM_VSCROLL As Integer = &H115I
If msg.Msg = WM_VSCROLL Then
_HookMouseScroll(msg)
End If
MyBase.WndProc(msg)
End Sub
Private Sub _HookMouseScroll(ByRef inMsg As Message)
Dim wObj as ???????
wObj = CType(inMsg.GetLParam(wObj.GetType), ???????)
End Sub
End Class
この後ですが、
(1)スクロール量をこのイベントで知ることはできるでしょうか。
(2)その場合の上記 ???????の構造体をご存知でしょうか。
ちなみに 当初は、MouseHookイベントと同じかと思ってましたが、どうもそうではなさそうです。
博識の皆様、いつもご迷惑をおかけしますが、何卒よろしくお願いします。
後は、MouseDown MouseMoveイベントを拾うしかない。。。。