tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
MSFlexGrid でマウスホイールによるスクロール操作を実装(VB6.0)_1 ( No.1 )  [親スレッドへ]
日時: 2009/04/20 17:21
名前: 魔界の仮面弁士

***********************************************************************************
* カテゴリー:[グリッド関係][マウス][]                                            *
* キーワード:MSHFlexGrid,イベント,マウスホイール,スクロール,ホイールマウス       *
***********************************************************************************


> 上記の魔界の仮面弁士さんの投稿を見て面白そうだったので試して見ました。
> -----------------------------------------------------------------------------------
> 投稿日 : 2009/04/19(Sun) 14:30
> 回答者 : 花ちゃん  

さらに手を加えて、回転速度を検出できるタイプのマウスをサポートしてみました。
同じ量を回転させた場合は、素早く回すほど、より多くスクロールします。


> Private Sub DirectXEvent8_DXCallback(ByVal EventId As Long)
>   If EventId <> hEvent Then
>       Exit Sub
>   End If
>   Dim devdata(7) As DxVBLibA.DIDEVICEOBJECTDATA
>   Dim datacnt As Long
>   On Error Resume Next
>   datacnt = oDIDevM.GetDeviceData(devdata, DIGDD_DEFAULT)
>   If Err.Number <> 0 Then
>       datacnt = 0
>       oDIDevM.Acquire
>   End If
>   On Error GoTo 0

    Const WHEEL_DELTA As Long = 120
    Dim i As Long
    For i = 0 To datacnt - 1
        If devdata(i).lOfs = DIMOFS_Z Then
            Dim direction As Long
            direction = IIf(devdata(i).lData < 0, SB_LINEDOWN, SB_LINEUP)
            Dim count As Long
            count = Abs(devdata(i).lData) \ WHEEL_DELTA
            Dim j As Long
            For j = 1 To count
                SendMessage MSFlexGrid1.hWnd, WM_VSCROLL, direction, ByVal 0&
            Next
        End If
    Next i

> End Sub



 [スレッド一覧へ] [親スレッドへ]