如何在 QB45 中检测鼠标滚轮

问题描述

我使用以下代码在 QB45 中捕获左/右/中鼠标按钮和鼠标行/列:

(QB45 是 Microsoft Quick Basic v4.5)

我需要一种方法来检测 MouseWheel。我看了拉尔夫布朗的中断列表,运气不佳。

有什么想法吗?顺便说一句:我使用的是 Int 0x33。

我提交的代码适用于 Microsoft Quickbasic IDE,需要库文件 QB.QLB。

DECLARE SUB Mouse.Function (Var1,Var2)
DIM SHARED MouseX AS INTEGER,MouseY AS INTEGER

TYPE RegTypeX
  AX AS INTEGER
  BX AS INTEGER
  CX AS INTEGER
  DX AS INTEGER
  BP AS INTEGER
  SI AS INTEGER
  DI AS INTEGER
  Flags AS INTEGER
  DS AS INTEGER
  ES AS INTEGER
END TYPE

COMMON SHARED InregsX AS RegTypeX
COMMON SHARED OutregsX AS RegTypeX

DECLARE SUB InterruptX (N AS INTEGER,I AS RegTypeX,O AS RegTypeX)

 CALL Mouse.Function(0,0) ' init mouse
 CALL Mouse.Function(1,0) ' show mouse
 DO

 IF LEN(INKEY$) THEN
    CALL Mouse.Function(2,0) ' hide mouse
    EXIT DO
 END IF

 ' read mouse button press
 CALL Mouse.Function(3,0)

 Var2 = INT((OutregsX.CX - 1) / 8 + 1)
 Var3 = INT((OutregsX.DX - 1) / 8 + 1)

 IF Var3 <> Mouse.Row OR Var2 <> Mouse.Column THEN
    CALL Mouse.Function(2,0) ' hide mouse
    Mouse.Row = Var3
    Mouse.Column = Var2
    PRINT Mouse.Row,Mouse.Column
    CALL Mouse.Function(1,0) ' show mouse
 END IF

 Mouse.Button = False
 CALL Mouse.Function(5,0)
 IF (OutregsX.AX AND 1) = 1 THEN
    IF OutregsX.BX > False THEN
       Mouse.Button = -1
       PRINT "Left-Click"
    END IF
 END IF
 Mouse.Button2 = False
 CALL Mouse.Function(5,1)
 IF (OutregsX.AX AND 2) = 2 THEN
    IF OutregsX.BX > False THEN
       Mouse.Button2 = -1
       PRINT "Right-Click"
    END IF
 END IF
 Mouse.Button3 = False
 CALL Mouse.Function(5,2)
 IF (OutregsX.AX AND 4) = 4 THEN
    IF OutregsX.BX > False THEN
       Mouse.Button3 = -1
       PRINT "Middle-Click"
    END IF
 END IF
 LOOP
 END

SUB Mouse.Function (Var1,Var2)
   InregsX.AX = Var1
   InregsX.BX = Var2
   CALL InterruptX(&H33,InregsX,OutregsX)
END SUB

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...