Rev 8330 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8330 | Rev 9597 | ||
---|---|---|---|
1 | #ifndef INCLUDE_MOUSE_H |
1 | #ifndef INCLUDE_MOUSE_H |
2 | #define INCLUDE_MOUSE_H |
2 | #define INCLUDE_MOUSE_H |
3 | 3 | ||
4 | //Button MOUSE |
4 | //Button MOUSE |
5 | #define MOUSE_LEFT 001b |
5 | #define MOUSE_LEFT 001b |
6 | #define MOUSE_RIGHT 010b |
6 | #define MOUSE_RIGHT 010b |
7 | #define MOUSE_LR 011b |
7 | #define MOUSE_LR 011b |
8 | #define MOUSE_MIDDLE 100b |
8 | #define MOUSE_MIDDLE 100b |
9 | 9 | ||
10 | /** |
10 | /** |
11 | * The structure of the MOUSE |
11 | * The structure of the MOUSE |
12 | * x - coordinate X |
12 | * x - coordinate X |
13 | * y - coordinate Y |
13 | * y - coordinate Y |
14 | * xx and yy - time coordinates |
14 | * xx and yy - time coordinates |
15 | * lkm - left MOUSE button |
15 | * lkm - left MOUSE button |
16 | * pkm - right MOUSE button |
16 | * pkm - right MOUSE button |
17 | * mkm - MOUSE wheel |
17 | * mkm - MOUSE wheel |
18 | * key - keycode button |
18 | * key - keycode button |
19 | * tmp - time keycode |
19 | * tmp - time keycode |
20 | * down - key event press |
20 | * down - key event press |
21 | * up - key release events |
21 | * up - key release events |
22 | * move - event MOUSE movements |
22 | * move - event MOUSE movements |
23 | * click - when clicked |
23 | * click - when clicked |
24 | * dblclick - double-click get system value |
24 | * dblclick - double-click get system value |
25 | * drag - drag the element event |
25 | * drag - drag the element event |
26 | */ |
26 | */ |
27 | 27 | ||
28 | :struct MOUSE |
28 | :struct MOUSE |
29 | { |
29 | { |
30 | signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,tmp_time,hor,vert,left,top; |
30 | signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,tmp_time,hor,vert,left,top; |
31 | bool down,up,move,click,dblclick,drag; |
31 | bool down,up,move,click,dblclick,drag; |
32 | dword handle,_; |
32 | dword handle,_; |
33 | byte cmd; |
33 | byte cmd; |
34 | void get(); |
34 | void get(); |
35 | void set(); |
35 | void set(); |
36 | void center(); |
36 | void center(); |
37 | dword hide(); |
37 | dword hide(); |
38 | void slider(); |
38 | void slider(); |
39 | void show(); |
39 | void show(); |
40 | } mouse; |
40 | } mouse; |
41 | 41 | ||
42 | :void MOUSE::show() |
42 | :void MOUSE::show() |
43 | { |
43 | { |
44 | if(!handle)return; |
44 | if(!handle)return; |
45 | ECX = handle; |
45 | ECX = handle; |
46 | EAX = 37; |
46 | EAX = 37; |
47 | EBX = 5; |
47 | EBX = 5; |
48 | $int 64; |
48 | $int 64; |
49 | } |
49 | } |
50 | :dword MOUSE::hide() |
50 | :dword MOUSE::hide() |
51 | { |
51 | { |
52 | if(!_) |
52 | if(!_) |
53 | { |
53 | { |
54 | EAX = 68; |
54 | EAX = 68; |
55 | EBX = 12; |
55 | EBX = 12; |
56 | ECX = 32*32*4; |
56 | ECX = 32*32*4; |
57 | $int 64 |
57 | $int 64 |
58 | ECX = EAX; |
58 | ECX = EAX; |
59 | _ = EAX; |
59 | _ = EAX; |
60 | } else ECX = _; |
60 | } else ECX = _; |
61 | EAX = 37; |
61 | EAX = 37; |
62 | EBX = 4; |
62 | EBX = 4; |
63 | DX = 2; |
63 | DX = 2; |
64 | $int 64; |
64 | $int 64; |
65 | handle = EAX; |
65 | handle = EAX; |
66 | ECX = EAX; |
66 | ECX = EAX; |
67 | EAX = 37; |
67 | EAX = 37; |
68 | EBX = 5; |
68 | EBX = 5; |
69 | $int 64; |
69 | $int 64; |
70 | handle = EAX; |
70 | handle = EAX; |
71 | } |
71 | } |
72 | 72 | ||
73 | //set new attributes MOUSE |
73 | //set new attributes MOUSE |
74 | :void MOUSE::set() |
74 | :void MOUSE::set() |
75 | { |
75 | { |
76 | if((xx!=x)||(yy!=y)) |
76 | if((xx!=x)||(yy!=y)) |
77 | { |
77 | { |
78 | EAX = 18; |
78 | EAX = 18; |
79 | EBX = 19; |
79 | EBX = 19; |
80 | ECX = 4; |
80 | ECX = 4; |
81 | EDX = (x<<16)+y; |
81 | EDX = (x<<16)+y; |
82 | $int 64 |
82 | $int 64 |
83 | //move = true; |
83 | //move = true; |
84 | } |
84 | } |
85 | if((key)||(lkm|mkm|pkm))&&(down|up|click|dblclick|move) |
85 | if((key)||(lkm|mkm|pkm))&&(down|up|click|dblclick|move) |
86 | { |
86 | { |
87 | if(lkm|mkm|pkm)key=(lkm)|(pkm<<1)|(2< |
87 | if(lkm|mkm|pkm)key=(lkm)|(pkm<<1)|(2< |
88 | EAX = 18; |
88 | EAX = 18; |
89 | EBX = 19; |
89 | EBX = 19; |
90 | ECX = key; |
90 | ECX = key; |
91 | EDX = (x<<16)+y; |
91 | EDX = (x<<16)+y; |
92 | $int 64 |
92 | $int 64 |
93 | } |
93 | } |
94 | } |
94 | } |
95 | 95 | ||
96 | :void MOUSE::center() |
96 | :void MOUSE::center() |
97 | { |
97 | { |
98 | EAX = 18; |
98 | EAX = 18; |
99 | EBX = 15; |
99 | EBX = 15; |
100 | $int 64 |
100 | $int 64 |
101 | } |
101 | } |
102 | 102 | ||
103 | //get new attributes MOUSE |
103 | //get new attributes MOUSE |
104 | :void MOUSE::get() |
104 | :void MOUSE::get() |
105 | { |
105 | { |
106 | EAX = 37; |
106 | EAX = 37; |
107 | EBX = 1; |
107 | EBX = 1; |
108 | $int 64 |
108 | $int 64 |
109 | $mov ebx, eax |
109 | $mov ebx, eax |
110 | $shr eax, 16 |
110 | $shr eax, 16 |
111 | $and ebx,0x0000FFFF |
111 | $and ebx,0x0000FFFF |
112 | x = EAX; |
112 | x = EAX; |
113 | y = EBX; |
113 | y = EBX; |
114 | if (x>6000) x-=65535; |
114 | if (x>6000) x-=65535; |
115 | if (y>6000) y-=65535; |
115 | if (y>6000) y-=65535; |
116 | EAX = 37; |
116 | EAX = 37; |
117 | EBX = 2; |
117 | EBX = 2; |
118 | $int 64 |
118 | $int 64 |
119 | $mov ebx, eax |
119 | $mov ebx, eax |
120 | $mov ecx, eax |
120 | $mov ecx, eax |
121 | key = EAX; |
121 | key = EAX; |
122 | $and eax, 0x00000001 |
122 | $and eax, 0x00000001 |
123 | $shr ebx, 1 |
123 | $shr ebx, 1 |
124 | $and ebx, 0x00000001 |
124 | $and ebx, 0x00000001 |
125 | $shr ecx, 2 |
125 | $shr ecx, 2 |
126 | $and ecx, 0x00000001 |
126 | $and ecx, 0x00000001 |
127 | lkm = EAX; |
127 | lkm = EAX; |
128 | pkm = EBX; |
128 | pkm = EBX; |
129 | mkm = ECX; |
129 | mkm = ECX; |
130 | 130 | ||
131 | //when you release the MOUSE button |
131 | //when you release the MOUSE button |
132 | // Mouse Move Event |
132 | // Mouse Move Event |
133 | if(xx!=x)||(yy!=y) |
133 | if(xx!=x)||(yy!=y) |
134 | { |
134 | { |
135 | move = true; |
135 | move = true; |
136 | xx = x; |
136 | xx = x; |
137 | yy = y; |
137 | yy = y; |
138 | } |
138 | } |
139 | else move = false; |
139 | else move = false; |
140 | // Mouse Up Event |
140 | // Mouse Up Event |
141 | if(cmd)&&(!key){ |
141 | if(cmd)&&(!key){ |
142 | up = true; |
142 | up = true; |
143 | down = false; |
143 | down = false; |
144 | drag = false; |
144 | drag = false; |
145 | if(!move) click = true; |
145 | if(!move) click = true; |
146 | if(GetStartTime()-GetMouseDoubleClickDelay()<=tmp_time) |
146 | if(GetStartTime()-GetMouseDoubleClickDelay()<=tmp_time) |
147 | { |
147 | { |
148 | dblclick = true; |
148 | dblclick = true; |
149 | click = false; |
149 | click = false; |
150 | } |
150 | } |
151 | tmp_time = GetStartTime(); |
151 | tmp_time = GetStartTime(); |
152 | //returns the key code |
152 | //returns the key code |
153 | key = tmp; |
153 | key = tmp; |
154 | lkm = 1&tmp; |
154 | lkm = 1&tmp; |
155 | pkm = 2&tmp; |
155 | pkm = 2&tmp; |
156 | pkm >>= 1; |
156 | pkm >>= 1; |
157 | mkm = 4&tmp; |
157 | mkm = 4&tmp; |
158 | mkm >>= 2; |
158 | mkm >>= 2; |
159 | cmd = false; |
159 | cmd = false; |
160 | } |
160 | } |
161 | 161 | ||
162 | //when you press the MOUSE button |
162 | //when you press the MOUSE button |
163 | // Mouse Down Event/Move Event |
163 | // Mouse Down Event/Move Event |
164 | else |
164 | else |
165 | { |
165 | { |
166 | up = false; |
166 | up = false; |
167 | click = false; |
167 | click = false; |
168 | dblclick = false; |
168 | dblclick = false; |
169 | down = false; |
169 | down = false; |
170 | // Mouse Move Event |
170 | // Mouse Move Event |
171 | if(key)if(!cmd) |
171 | if(key)if(!cmd) |
172 | { |
172 | { |
173 | down = true; |
173 | down = true; |
174 | if(move)drag = true; |
174 | if(move)drag = true; |
175 | cmd = true; |
175 | cmd = true; |
176 | tmp=key; |
176 | tmp=key; |
177 | } |
177 | } |
178 | } |
178 | } |
179 | 179 | ||
180 | //scroll |
180 | //scroll |
181 | EAX = 37; |
181 | EAX = 37; |
182 | EBX = 7; |
182 | EBX = 7; |
183 | $int 64 |
183 | $int 64 |
184 | $mov ebx, eax |
184 | $mov ebx, eax |
185 | $shr eax, 16 |
185 | $shr eax, 16 |
186 | $and ebx,0x0000FFFF |
186 | $and ebx,0x0000FFFF |
187 | //hor = EAX; |
187 | hor = EAX; |
188 | vert = EBX; |
188 | vert = EBX; |
189 | } |
189 | } |
190 | 190 | ||
191 | :void MOUSE::slider() |
191 | :void MOUSE::slider() |
192 | { |
192 | { |
193 | signed _x,_y; |
193 | signed _x,_y; |
194 | if(!handle)hide(); |
194 | if(!handle)hide(); |
195 | get(); |
195 | get(); |
196 | _x = x;_y = y; |
196 | _x = x;_y = y; |
197 | pause(5); |
197 | pause(5); |
198 | get(); |
198 | get(); |
199 | left = _x - x; |
199 | left = _x - x; |
200 | top = _y - y; |
200 | top = _y - y; |
201 | center(); |
201 | center(); |
202 | get(); |
202 | get(); |
203 | _x = x;_y = y; |
203 | _x = x;_y = y; |
204 | pause(5); |
204 | pause(5); |
205 | } |
205 | } |
206 | 206 | ||
207 | 207 | ||
208 | /*===================================================================================== |
208 | /*===================================================================================== |
209 | =========================== =========================== |
209 | =========================== =========================== |
210 | =========================== SYSTEM =========================== |
210 | =========================== SYSTEM =========================== |
211 | =========================== =========================== |
211 | =========================== =========================== |
212 | =====================================================================================*/ |
212 | =====================================================================================*/ |
213 | 213 | ||
214 | 214 | ||
215 | inline fastcall int GetMouseSpeed() { |
215 | inline fastcall int GetMouseSpeed() { |
216 | EAX = 18; |
216 | EAX = 18; |
217 | EBX = 19; |
217 | EBX = 19; |
218 | ECX = 0; |
218 | ECX = 0; |
219 | $int 64 |
219 | $int 64 |
220 | } |
220 | } |
221 | 221 | ||
222 | inline fastcall void SetMouseSpeed(EDX) { |
222 | inline fastcall void SetMouseSpeed(EDX) { |
223 | EAX = 18; |
223 | EAX = 18; |
224 | EBX = 19; |
224 | EBX = 19; |
225 | ECX = 1; |
225 | ECX = 1; |
226 | $int 64 |
226 | $int 64 |
227 | } |
227 | } |
228 | 228 | ||
229 | inline fastcall int GetMouseAcceleration() { |
229 | inline fastcall int GetMouseAcceleration() { |
230 | EAX = 18; |
230 | EAX = 18; |
231 | EBX = 19; |
231 | EBX = 19; |
232 | ECX = 2; |
232 | ECX = 2; |
233 | $int 64 |
233 | $int 64 |
234 | } |
234 | } |
235 | 235 | ||
236 | inline fastcall void SetMouseAcceleration(EDX) { |
236 | inline fastcall void SetMouseAcceleration(EDX) { |
237 | EAX = 18; |
237 | EAX = 18; |
238 | EBX = 19; |
238 | EBX = 19; |
239 | ECX = 3; |
239 | ECX = 3; |
240 | $int 64 |
240 | $int 64 |
241 | } |
241 | } |
242 | 242 | ||
243 | inline fastcall int GetMouseDoubleClickDelay() { |
243 | inline fastcall int GetMouseDoubleClickDelay() { |
244 | EAX = 18; |
244 | EAX = 18; |
245 | EBX = 19; |
245 | EBX = 19; |
246 | ECX = 6; |
246 | ECX = 6; |
247 | $int 64 |
247 | $int 64 |
248 | } |
248 | } |
249 | 249 | ||
250 | inline fastcall void SetMouseDoubleClickDelay(DL) { |
250 | inline fastcall void SetMouseDoubleClickDelay(DL) { |
251 | EAX = 18; |
251 | EAX = 18; |
252 | EBX = 19; |
252 | EBX = 19; |
253 | ECX = 7; |
253 | ECX = 7; |
254 | $int 64 |
254 | $int 64 |
255 | } |
255 | } |
256 | 256 | ||
257 | #endif=tmp_time) |
257 | #endif=tmp_time) |
258 | >16)+y; |
258 | >16)+y; |
259 | ><16)+y; |
259 | ><16)+y; |
260 | > |
260 | > |
261 | > |
261 | > |
262 | >1)|(2< |
262 | >1)|(2< |
263 | ><1)|(2< |
263 | ><1)|(2< |
264 | >16)+y; |
264 | >16)+y; |
265 | ><16)+y; |
265 | ><16)+y; |
266 | > |
266 | > |