回 帖 发 新 帖 刷新版面

主题:怎么判断鼠标在哪个按键上?

我这有一个鼠标的程序,可以显示鼠标,但怎么判断鼠标在哪个按键上?
程序如下:
程序改编自[url]http://www.qbasic.com/files/wmouse.bas[/url]
相关资料请到[url]http://www.programfan.com/club/showbbs.asp?id=63552[/url]查看

DECLARE SUB MouseDriver (AX%, bx%, cx%, dx%, lb%, RB%)
DIM SHARED mouse$      '调用鼠标驱动程序
FOR i% = 1 TO 57
  READ a$
  mouse$ = mouse$ + CHR$(VAL("&H" + a$))
NEXT i%
DATA 55,89,E5,8B,5E,0C,8B,07,50,8B,5E,0A,8B,07,50,8B
DATA 5E,08,8B,0F,8B,5E,06,8B,17,5B,58,1E,07,CD,33,53
DATA 8B,5E,0C,89,07,58,8B,5E,0A,89,07,8B,5E,08,89,0F
DATA 8B,5E,06,89,17,5D,CA,08,00

SCREEN 12
DIM mouseshapew(100), mouseshapeb(100), bkground(100)
a1$ = "c8 m+12,+10   m-6,0   m+5,+10   m-2,+1   m-5,-10   m-4,+4   m+0,-15bm+2,+5p7,8bm-2,-5"
a2$ = "c8 m+12,+10c7 m-6,0c8 m+5,+10 m-2,+1c15 m-5,-10c8 m-4,+4c15 m+0,-15"

CLS
LINE (1, 1)-STEP(15, 25), 15, BF
PSET (2, 2): DRAW a1$ + a2$
GET (2, 2)-STEP(12, 21), mouseshapew           '取白色背景上的鼠标
LINE (15, 1)-STEP(30, 25), 0, BF
PSET (16, 2): DRAW a1$ + a2$
GET (16, 2)-STEP(12, 21), mouseshapeb          '取黑色背景上的鼠标

LINE (0, 0)-(639, 479), 7, BF
LINE (10, 10)-(627, 458), 0, BF

MouseDriver 3, bx%, cx%, dx%, lb%, RB%
oldx = cx%: oldy = dx%
GET (cx%, dx%)-STEP(12, 21), bkground
DO
  MouseDriver 3, bx%, cx%, dx%, lb%, RB%
  IF cx% < 10 THEN cx% = 10
  IF dx% < 10 THEN dx% = 10
  IF cx% > 627 THEN cx% = 627
  IF dx% > 458 THEN dx% = 458
  IF oldx <> cx% OR oldy <> dx% THEN
    PUT (oldx, oldy), bkground, PSET
    GET (cx%, dx%)-STEP(12, 21), bkground
    PUT (cx%, dx%), mouseshapew, AND
    PUT (cx%, dx%), mouseshapeb, OR
    oldx = cx%: oldy = dx%
  END IF
LOOP

SUB MouseDriver (AX%, bx%, cx%, dx%, lb%, RB%)
DEF SEG = VARSEG(mouse$)
CALL Absolute(AX%, bx%, cx%, dx%, SADD(mouse$))
SELECT CASE bx%
  CASE 0
    lb% = 0: RB% = 0
  CASE 1
    lb% = -1: RB% = 0
  CASE 2
    lb% = 0: RB% = -1
  CASE 3
    lb% = -1: RB% = -1
END SELECT
END SUB

回复列表 (共3个回复)

沙发

http://www.programfan.com/club/showbbs.asp?id=20553

板凳

请问程序的运行环境是?

我用[url=http://www.programfan.com/showdown.asp?id=227]QB4.5[/url]运行,结果找不到qb.bi

3 楼

我用的QB4。5的版本

如果你的没有QB。BI,说明你的QB4。5的版本就不是个完整的版本
你可以把这个语句删除,然后把下面的代码复制到程序中也行
TYPE RegType
     ax    AS INTEGER
     bx    AS INTEGER
     cx    AS INTEGER
     dx    AS INTEGER
     bp    AS INTEGER
     si    AS INTEGER
     di    AS INTEGER
     flags AS INTEGER
END TYPE

我来回复

您尚未登录,请登录后再回复。点此登录或注册