|
分類:[VB.NET/VB2005 以降]
環境:XP / VB2005
お世話になっております。 現在、Panelの中にPictureBoxを置き、そこに画像を表示させるプログラムを作っています。 PictureBoxは画像のサイズに合わせて伸縮するので、画像がPanelよりも大きい場合、スクロールバーが出ることになります。 このとき、マウスでのドラッグで、PictureBoxをスクロールさせたいと思い、色々と調べてみたところ、 SendMessageでWM_VSCROLL(WM_HSCROLL)を送れば良いらしいと分かりました。
そこで、 Declare Auto Function SendMessage Lib "User32" _ (ByVal hWnd As IntPtr, ByVal uMsg As UInt32, _ ByVal wParam As Int32, ByVal lParam As Int32) As Int32
Const WM_VSCROLL As UInt32 = &H115 Const WM_HSCROLL As UInt32 = &H114
Const SB_LINEUP As UInt32 = 0 '上矢印を押した Const SB_LINEDOWN As UInt32 = 1 '下矢印を押した Const SB_PAGEUP As UInt32 = 2 'PageUpを押した Const SB_PAGEDOWN As UInt32 = 3 'PageDownを押した Const SB_THUMBPOSITION As UInt32 = 4 '絶対位置へスクロール Const SB_THUMTRACK As UInt32 = 5 'スクロールボックスを指定位置へドラッグ Const SB_TOP As UInt32 = 6 '[HOME]キー Const SB_BOTTMOM As UInt32 = 7 '[END]キー Const SB_ENDSCROLL As UInt32 = 8 'スクロールが終了
とし、 SendMessage(Me.Panel1.Handle, WM_VSCROLL, ○○, 0)
としたところ、SB_LINEUPやSB_TOPに関してはうまくいったのですが、マウスでのスクロールをどのように実現して良いか分かりません。 SB_THUMBPOSITIONかSB_THUMTRACK を使うんだろうということは分かるのですが… いざ使った場合に、移動先のパラメータをどのようにして渡して良いか分からず詰まっています。 また、SB_ENDSCROLL(スクロールが終了)の意味や使いどころもよく分かりません。 御存知の方、教えていただければ有り難いです。
よろしくお願いします。
|