Informations sur: Gestion de la souris, 3 Bouttons

Publié par Francesco le 08/08/2007

Description

Adaptation du code de CodeWarrior pour la gestion d'une souris 3 Boutons, et peut-etre également la molette, si le driver souris supporte la fonction 30h de l'interruption de la souris. Je n'ai pas pu tester car DosBox ne supporte pas cette fonctionnalité.

Code source (langage qbasic)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
DECLARE FUNCTION GetMouseCButton! ()
DECLARE FUNCTION GetMouseWheel% ()
' +-------------------------------------+
' | Exemple - exemple.bas               |
' | par R. VerchŠre                     |
' |     http://www.cybwarrior.com/      |
' |     webmaster@cybwarrior.com        |
' +-------------------------------------+
'
' Exemple d'utilisation des routines de traitement de la souris
'
' Pour toutes question : http://www.cybwarrior.com/forum.php
 
DECLARE SUB ShowMouse ()
DECLARE SUB HideMouse ()
DECLARE SUB MoveMouse (x%, y%)
DECLARE FUNCTION InitMouse! ()
DECLARE FUNCTION GetMouseX! ()
DECLARE FUNCTION GetMouseY! ()
DECLARE FUNCTION GetMouseLButton! ()
DECLARE FUNCTION GetMouseRButton! ()
 
CONST TRUE = -1
CONST FALSE = 0
 
DIM SHARED SegAsm%
DIM SHARED OffAsm%
DIM Asm%(56)
 
SegAsm% = VARSEG(Asm%(0))
OffAsm% = VARPTR(Asm%(0))
DEF SEG = SegAsm%
FOR i% = LBOUND(Asm%, 1) TO UBOUND(Asm%, 1)
  READ Octet%
  POKE OffAsm% + i%, Octet%
NEXT i%
DEF SEG
 
TestSouris = InitMouse
 
SCREEN 12
CLS
 
LOCATE 2
PRINT "Esc - Quitter"
PRINT "S - Montrer le curseur de la souris"
PRINT "H - Masquer le curseur de la souris"
PRINT "M - D‚placer le curseur … une position al‚atoire"
 
DO
        t$ = INKEY$
 
        SELECT CASE UCASE$(t$)
        CASE "S"
                ShowMouse
        CASE "H"
                HideMouse
        CASE "M"
                MoveMouse RND * 640, RND * 480
        END SELECT
       
        LOCATE 1
        PRINT "X : "; GetMouseX; "  Y : "; GetMouseY; "  Bouton gauche : "; GetMouseLButton; "  Bouton droit : "; GetMouseRButton
        PRINT "Bouton Central : "; GetMouseCButton; "Molette : "; GetMouseWheel%
LOOP UNTIL t$ = CHR$(27)
 
' Langage machine pour la gestion de la souris
DATA &H55,&H89,&HE5,&H8B,&H5E,&H0C,&H8B,&H07,&H50,&H8B
DATA &H5E,&H0A,&H8B,&H07,&H50,&H8B,&H5E,&H08,&H8B,&H0F
DATA &H8B,&H5E,&H06,&H8B,&H17,&H5B,&H58,&H1E,&H07,&HCD
DATA &H33,&H53,&H8B,&H5E,&H0C,&H89,&H07,&H58,&H8B,&H5E
DATA &H0A,&H89,&H07,&H8B,&H5E,&H08,&H89,&H0F,&H8B,&H5E
DATA &H06,&H89,&H17,&H5D,&HCA,&H08,&H00
 
FUNCTION GetMouseCButton
'+---------------------------------------------+
'|                                             |
'| Renvoi l'‚tat du bouton droit de la souris: |
'|    + TRUE si enfonc‚                        |
'|    + FALSE si relach‚                       |
'|                                             |
'+---------------------------------------------+
DEF SEG = SegAsm%
ax% = 3
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
IF (bx% AND 4) <> 0 THEN GetMouseCButton = TRUE ELSE GetMouseCButton = FALSE
DEF SEG
 
END FUNCTION
 
FUNCTION GetMouseLButton
'+----------------------------------------------+
'|                                              |
'| Renvoi l'‚tat du bouton gauche de la souris: |
'|    + TRUE si enfonc‚                         |
'|    + FALSE si relach‚                        |
'|                                              |
'+----------------------------------------------+
DEF SEG = SegAsm%
ax% = 3
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
IF (bx% AND 1) <> 0 THEN GetMouseLButton = TRUE ELSE GetMouseLButton = FALSE
DEF SEG
END FUNCTION
 
FUNCTION GetMouseRButton
'+---------------------------------------------+
'|                                             |
'| Renvoi l'‚tat du bouton droit de la souris: |
'|    + TRUE si enfonc‚                        |
'|    + FALSE si relach‚                       |
'|                                             |
'+---------------------------------------------+
DEF SEG = SegAsm%
ax% = 3
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
IF (bx% AND 2) <> 0 THEN GetMouseRButton = TRUE ELSE GetMouseRButton = FALSE
DEF SEG
END FUNCTION
 
FUNCTION GetMouseWheel%
'+---------------------------------------------+
'|                                             |
'| Renvoi l'‚tat de la molette de la souris:   |
'+---------------------------------------------+
DEF SEG = SegAsm%
 
ax% = &H30
cx% = 0
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
DEF SEG
GetMouseWheel = bx%
END FUNCTION
 
FUNCTION GetMouseX
'+---------------------------------------+
'|                                       |
'| Renvoi les coordonn‚es X de la souris |
'|                                       |
'+---------------------------------------+
DEF SEG = SegAsm%
ax% = 3
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
GetMouseX = cx%
DEF SEG
END FUNCTION
 
FUNCTION GetMouseY
'+---------------------------------------+
'|                                       |
'| Renvoi les coordonn‚es Y de la souris |
'|                                       |
'+---------------------------------------+
DEF SEG = SegAsm%
ax% = 3
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
GetMouseY = dx%
DEF SEG
END FUNCTION
 
SUB HideMouse
'+--------------------------------+
'|                                |
'| Masque le curseur de la souris |
'|                                |
'+--------------------------------+
DEF SEG = SegAsm%
ax% = 2
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
DEF SEG
END SUB
 
FUNCTION InitMouse
'+---------------------------------------+
'|                                       |
'| Initialise la souris                  |
'|    + TRUE si une souris est d‚tect‚e  |
'|    + FALSE si aucune souris d‚tect‚e  |
'|                                       |
'+---------------------------------------+
DEF SEG = SegAsm%
ax% = 0
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
IF ax% = 0 THEN InitMouse = FALSE ELSE InitMouse = TRUE
DEF SEG
END FUNCTION
 
SUB MoveMouse (x%, y%)
'+---------------------------------+
'|                                 |
'| D‚place le curseur de la souris |
'|                                 |
'+---------------------------------+
DEF SEG = SegAsm%
ax% = 4
cx% = x%
dx% = y%
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
DEF SEG
END SUB
 
SUB ShowMouse
'+---------------------------------+
'|                                 |
'| Affiche le curseur de la souris |
'|                                 |
'+---------------------------------+
DEF SEG = SegAsm%
ax% = 1
CALL ABSOLUTE(ax%, bx%, cx%, dx%, OffAsm%)
DEF SEG
END SUB
 
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,188 s - Crédits - Stats
1 connecté