鼠标中间滚轮(bottum=4)往前、往后、下压的VB代码是什么?如何用其代码变量实现决定控制某个控件值变化、移动、翻页!??大帅们我正在线等救!

解决方案 »

  1.   

    以下保存为MouseWheel.vbp:Type=Exe
    Form=FrmWndProc.frm
    Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation
    Module=ModWndProc; ModWndProc.bas
    IconForm="FrmWndProc"
    Startup="FrmWndProc"
    HelpFile=""
    ExeName32="MouseWheel.exe"
    Command32=""
    Name="MouseWheel"
    HelpContextID="0"
    CompatibleMode="0"
    MajorVer=1
    MinorVer=0
    RevisionVer=0
    AutoIncrementVer=0
    ServerSupportFiles=0
    CompilationType=0
    OptimizationType=0
    FavorPentiumPro(tm)=0
    CodeViewDebugInfo=0
    NoAliasing=0
    BoundsCheck=0
    OverflowCheck=0
    FlPointCheck=0
    FDIVCheck=0
    UnroundedFP=0
    StartMode=0
    Unattended=0
    Retained=0
    ThreadPerObject=0
    MaxNumberOfThreads=1[MS Transaction Server]
    AutoRefresh=1以下保存为FrmWndProc.frm:VERSION 5.00
    Begin VB.Form FrmWndProc 
       BorderStyle     =   3  'Fixed Dialog
       Caption         =   "Form1"
       ClientHeight    =   1290
       ClientLeft      =   45
       ClientTop       =   330
       ClientWidth     =   4005
       LinkTopic       =   "Form1"
       MaxButton       =   0   'False
       MinButton       =   0   'False
       ScaleHeight     =   1290
       ScaleWidth      =   4005
       StartUpPosition =   2  'CenterScreen
       Begin VB.CommandButton Command1 
          Caption         =   "开始"
          Height          =   375
          Left            =   405
          TabIndex        =   1
          Top             =   450
          Width           =   3210
       End
       Begin VB.Timer Timer1 
          Interval        =   100
          Left            =   5130
          Top             =   3015
       End
       Begin VB.TextBox Text1 
          Alignment       =   2  'Center
          Appearance      =   0  'Flat
          Height          =   285
          IMEMode         =   3  'DISABLE
          Left            =   405
          Locked          =   -1  'True
          TabIndex        =   0
          Text            =   "在这里滚动滚轮看看"
          Top             =   135
          Width           =   3210
       End
       Begin VB.Label Label1 
          Alignment       =   2  'Center
          Caption         =   "Label1"
          Height          =   195
          Left            =   720
          TabIndex        =   2
          Top             =   945
          Width           =   2310
       End
    End
    Attribute VB_Name = "FrmWndProc"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    '*************************************************************************
    '**说    明:紫水晶工作室 http://www.m5home.com/
    '**创 建 人:马大哈
    '**日    期:2005年04月13日
    '**描    述:一个使用子类技术得到鼠标滚轮状态的简单例子
    '*************************************************************************
    Option ExplicitDim St As LongPrivate Sub Command1_Click()
                                    '这里是对Text1进行子类化处理
    If St = -1 Then    PrevWndProc = SetWindowLong(Text1.Hwnd, GWL_WNDPROC, AddressOf SubWndProc)
        Command1.Caption = "停止"
        St = 1
        Me.Caption = "子类处理状态!"
        
    Else    SetWindowLong Text1.Hwnd, GWL_WNDPROC, PrevWndProc
        Command1.Caption = "开始"
        St = -1
        Me.Caption = "正常状态"
        
    End IfEnd SubPrivate Sub Form_Load()St = -1
    Me.Caption = "准备完毕"End SubPrivate Sub Form_Unload(Cancel As Integer)If St <> -1 Then
        SetWindowLong Text1.Hwnd, GWL_WNDPROC, PrevWndProc
    End IfEnd SubPrivate Sub Timer1_Timer()Select Case MouseW
        Case 1
            Label1.Caption = "向上滚动"
        Case -1
            Label1.Caption = "向下滚动"
        Case Else
            Label1.Caption = "滚轮静止"
    End SelectMouseW = 0End Sub
      

  2.   

    以下保存为ModWndProc.bas:Attribute VB_Name = "ModWndProc"
    '*************************************************************************
    '**说    明:紫水晶工作室 http://www.m5home.com/
    '**创 建 人:马大哈
    '**日    期:2005年04月13日
    '**描    述:一个使用子类技术得到鼠标滚轮状态的简单例子
    '*************************************************************************
    Option ExplicitPublic Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public 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
    Public Const GWL_WNDPROC = (-4)
    Public Const WM_GETTEXT = &HD
    Public Const WM_MOUSEWHEEL = &H20APublic PrevWndProc As Long
    Public MouseW As LongPublic Function SubWndProc(ByVal Hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As LongSelect Case MSG         '在这里进行过滤.如果知道其他的消息,也可以在这里过滤.    Case WM_MOUSEWHEEL
            
            If wParam > 0 Then
                MouseW = 1
            ElseIf wParam < 0 Then
                MouseW = -1
            End If
            
    End SelectSubWndProc = CallWindowProc(PrevWndProc, Hwnd, MSG, wParam, lParam)     '其它消息不管End Function我的域名这几天出了问题....晕倒你用记事本保存它们为相应的文件,然后打开看看.这里面就是使用子类化来拦截了鼠标滚轮的消息.至于滚轮按下,你得自己查查是什么消息,我这里现在没有VB,没办法
      

  3.   

    谢谢您!我原理还没吃透,但复制到VB中您的实验小程序能成功运行!准备发分到您户头结账了,正探寻如何发分操作?结账:给 myjian(小马--变身超级点子大王!!!!!)  20 分