Rev 4336 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3853 | GerdtR | 1 | |
4336 | GerdtR | 2 | COLOR_SEL_BUT equ 00F7092Dh |
3 | MAX_USER_BUTTONS equ 30 |
||
4082 | GerdtR | 4 | |
4036 | GerdtR | 5 | |
3853 | GerdtR | 6 | RButtonWin: |
7 | mcall 40,100101b ;SetMaskMessage 100101b |
||
4146 | GerdtR | 8 | mcall 48,3,sc,40 |
9 | |||
4036 | GerdtR | 10 | |
4146 | GerdtR | 11 | rol eax,16 |
12 | add al,DELTA_COLOR |
||
13 | jnc @f |
||
14 | mov al,0FFh |
||
15 | @@: |
||
4036 | GerdtR | 16 | rol eax,16 |
4146 | GerdtR | 17 | add al,DELTA_COLOR |
18 | jnc @f |
||
19 | mov al,0FFh |
||
20 | @@: |
||
4036 | GerdtR | 21 | add ah,DELTA_COLOR |
4146 | GerdtR | 22 | jnc @f |
23 | mov ah,0FFh |
||
24 | @@: |
||
4036 | GerdtR | 25 | mov [sc.workH],eax |
4146 | GerdtR | 26 | |
4036 | GerdtR | 27 | |
4146 | GerdtR | 28 | rol eax,16 |
29 | sub al,DELTA_COLOR |
||
30 | jnc @f |
||
31 | mov al,0FFh |
||
32 | @@: |
||
4036 | GerdtR | 33 | rol eax,16 |
4146 | GerdtR | 34 | sub al,DELTA_COLOR |
35 | jnc @f |
||
36 | mov al,0FFh |
||
37 | @@: |
||
4036 | GerdtR | 38 | sub ah,DELTA_COLOR |
4146 | GerdtR | 39 | jnc @f |
40 | mov ah,0FFh |
||
41 | @@: |
||
4036 | GerdtR | 42 | mov [sc.workL],eax |
4146 | GerdtR | 43 | |
4036 | GerdtR | 44 | |
45 | |||
46 | |||
4146 | GerdtR | 47 | mov [SelIcon],eax |
48 | |||
3853 | GerdtR | 49 | |
4146 | GerdtR | 50 | m2m [RMenuW],[MinRMenuW] |
51 | |||
4082 | GerdtR | 52 | |
4146 | GerdtR | 53 | jne .RBW1 |
54 | ;----------- если клик не по иконке ------------------------------------------------ |
||
4082 | GerdtR | 55 | mov [NumMenuButt],0 |
4146 | GerdtR | 56 | |
4082 | GerdtR | 57 | |
4146 | GerdtR | 58 | mcall 68,12,dword[bufIni+32] ;выделяем память для подписей и путей запуска |
59 | mov [RBMenuCP],eax ;GetUserBut берёт отсюда первоначальный указатель на память |
||
60 | stdcall [ini_enum_keys],IconIni,secRButt,GetUserBut |
||
61 | |||
3853 | GerdtR | 62 | |
4146 | GerdtR | 63 | add [NumMenuButt],4 |
64 | |||
4082 | GerdtR | 65 | |
4146 | GerdtR | 66 | mov [RBMenuCP+ebx*8+8],RMenuAlign |
67 | cmp [bFixIcons],1 |
||
68 | je @f |
||
69 | mov [RBMenuCP+ebx*8+16],RMenuOffMoving |
||
70 | jmp .RBW11 |
||
71 | @@: |
||
4082 | GerdtR | 72 | mov [RBMenuCP+ebx*8+16],RMenuOnMoving |
4146 | GerdtR | 73 | .RBW11: |
4082 | GerdtR | 74 | |
75 | |||
4146 | GerdtR | 76 | |
4082 | GerdtR | 77 | |
4146 | GerdtR | 78 | mov [RBMenuCP+ebx*8+8+4],0 |
79 | mov [RBMenuCP+ebx*8+16+4],0 |
||
80 | mov [RBMenuCP+ebx*8+24+4],0 |
||
81 | |||
4082 | GerdtR | 82 | |
83 | |||
4146 | GerdtR | 84 | ;----------- если клик по иконке ------------------------------------------------ |
4082 | GerdtR | 85 | .RBW1: |
86 | xor ebx,ebx |
||
4146 | GerdtR | 87 | mov [NumMenuButt],5 |
88 | |||
4082 | GerdtR | 89 | |
4146 | GerdtR | 90 | mov [RBMenuCP+ebx*8+8],RMenuAlign |
91 | cmp [bFixIcons],1 |
||
92 | je @f |
||
93 | mov [RBMenuCP+ebx*8+16],RMenuOffMoving |
||
94 | jmp .RBW21 |
||
95 | @@: |
||
4082 | GerdtR | 96 | mov [RBMenuCP+ebx*8+16],RMenuOnMoving |
4146 | GerdtR | 97 | .RBW21: |
4082 | GerdtR | 98 | mov [RBMenuCP+ebx*8+24],RMenuDel |
4146 | GerdtR | 99 | mov [RBMenuCP+ebx*8+32],RMenuProp |
100 | |||
4082 | GerdtR | 101 | |
4146 | GerdtR | 102 | mov [RBMenuCP+ebx*8+8+4],0 |
103 | mov [RBMenuCP+ebx*8+16+4],0 |
||
104 | mov [RBMenuCP+ebx*8+24+4],0 |
||
105 | mov [RBMenuCP+ebx*8+32+4],0 |
||
106 | |||
4082 | GerdtR | 107 | |
108 | .RBW2: |
||
109 | |||
110 | |||
4146 | GerdtR | 111 | jne @f |
112 | mov eax,[NumMenuButt] |
||
113 | shl eax,4 |
||
114 | mov [RMenuH],ax |
||
115 | jmp .rbw1 |
||
116 | @@: |
||
4036 | GerdtR | 117 | mov [RMenuH],16*5 |
4146 | GerdtR | 118 | .rbw1: |
4036 | GerdtR | 119 | |
3853 | GerdtR | 120 | |
4146 | GerdtR | 121 | add [RMenuH],3 ;на рамку |
122 | |||
4082 | GerdtR | 123 | |
3853 | GerdtR | 124 | mcall 12,1 ;RedrawWinBeg |
4146 | GerdtR | 125 | mov ebx,[MouseX] |
126 | shl ebx,16 |
||
127 | mov bx,[RMenuW] |
||
128 | |||
4082 | GerdtR | 129 | |
4146 | GerdtR | 130 | shl ecx,16 |
131 | mov cx,[RMenuH] |
||
132 | |||
4082 | GerdtR | 133 | |
4146 | GerdtR | 134 | mov esi,01000000h |
135 | xor eax,eax |
||
136 | int 40h |
||
137 | |||
3853 | GerdtR | 138 | |
4146 | GerdtR | 139 | inc bx |
140 | and ecx,0FFFFh |
||
141 | inc cx |
||
142 | mcall 13,,,[sc.work] |
||
143 | |||
4036 | GerdtR | 144 | |
4082 | GerdtR | 145 | mov ecx,[NumMenuButt] |
4146 | GerdtR | 146 | .DrawUB: |
3853 | GerdtR | 147 | push ecx |
4146 | GerdtR | 148 | |
3853 | GerdtR | 149 | |
4146 | GerdtR | 150 | sub eax,ecx |
151 | mov edx,eax ;button ID = от 0 до NumMenuButt |
||
152 | or edx,60000000h |
||
153 | shl eax,4+16 ;*16*10000h |
||
154 | mov ecx,eax |
||
155 | mov cx,16 |
||
156 | |||
3853 | GerdtR | 157 | |
4146 | GerdtR | 158 | mov bx,[RMenuW] |
159 | mov esi,[sc.work] |
||
160 | mcall 8 ;определили |
||
161 | |||
4088 | GerdtR | 162 | |
4146 | GerdtR | 163 | shr ecx,16 |
164 | mov bx,cx |
||
165 | add bx,7 |
||
166 | |||
4088 | GerdtR | 167 | |
4146 | GerdtR | 168 | or ecx,80000000h |
169 | |||
4088 | GerdtR | 170 | |
4146 | GerdtR | 171 | sub eax,[esp] |
172 | mov edx,[RBMenuCP+eax*8] |
||
173 | mcall 4 |
||
174 | |||
4088 | GerdtR | 175 | |
176 | |||
4146 | GerdtR | 177 | loop .DrawUB |
178 | ;--------------- |
||
4082 | GerdtR | 179 | |
3853 | GerdtR | 180 | |
4082 | GerdtR | 181 | xor ebx,ebx ;верх |
4146 | GerdtR | 182 | mov bx,[RMenuW] |
183 | xor ecx,ecx |
||
184 | mcall 38,,,[sc.workL] |
||
185 | |||
3853 | GerdtR | 186 | |
4146 | GerdtR | 187 | shl ebx,16 |
188 | mov bx,[RMenuW] |
||
189 | xor ecx,ecx |
||
190 | mov cx,[RMenuH] |
||
191 | mcall |
||
192 | |||
4082 | GerdtR | 193 | |
4146 | GerdtR | 194 | mov bx,[RMenuW] |
195 | mov cx,[RMenuH] |
||
196 | shl ecx,16 |
||
197 | mov cx,[RMenuH] |
||
198 | mcall |
||
199 | |||
3853 | GerdtR | 200 | |
4146 | GerdtR | 201 | xor ecx,ecx |
202 | mov cx,[RMenuH] |
||
203 | mcall |
||
204 | |||
3853 | GerdtR | 205 | |
4036 | GerdtR | 206 | |
4082 | GerdtR | 207 | xor ebx,ebx |
4146 | GerdtR | 208 | mov bx,[RMenuW] |
209 | add ebx,1*10000h-1 |
||
210 | mov ecx,00010001h |
||
211 | mcall ,,,[sc.workH] |
||
212 | |||
4036 | GerdtR | 213 | |
4146 | GerdtR | 214 | xor ecx,ecx |
215 | mov cx,[RMenuH] |
||
216 | add ecx,1*10000h-1 |
||
217 | mcall |
||
218 | |||
3853 | GerdtR | 219 | |
220 | |||
4082 | GerdtR | 221 | mcall 12,2 ;RedrawWinEnd |
4146 | GerdtR | 222 | ;------------------------------------------------------------------- |
4082 | GerdtR | 223 | |
3853 | GerdtR | 224 | |
4146 | GerdtR | 225 | mcall 18,21,dword[RBProcInfo+30] |
226 | m2m dword[RBSlot],eax |
||
227 | |||
3853 | GerdtR | 228 | |
229 | mcall 10 ;WaitMessage |
||
4146 | GerdtR | 230 | dec eax |
231 | jz RBWRedraw |
||
232 | sub eax,2 |
||
233 | jz RBWButton |
||
234 | sub eax,3 |
||
235 | jz RBWMouse |
||
236 | jmp RBWMessages |
||
237 | |||
3853 | GerdtR | 238 | |
239 | mcall 17 ;GetButtonPressed |
||
4146 | GerdtR | 240 | shr eax,8 |
241 | |||
4082 | GerdtR | 242 | |
4146 | GerdtR | 243 | mov eax,[RBMenuCP+ebx*8+4] ;если сдесь 0, то клик по стандартной кнопке(которая не в ini) |
244 | test eax,eax |
||
245 | jnz .RBWB |
||
246 | mov eax,[RBMenuCP+ebx*8] ;смотрим, указатель на какую надпись в подписи |
||
247 | cmp eax,RMenuRedrawFon ; и по ней выбираем действие |
||
248 | jz RBRedrawFon |
||
249 | cmp eax,RMenuAlign |
||
250 | jz RBAlign |
||
251 | cmp eax,RMenuOffMoving |
||
252 | jz RBFixIcons |
||
253 | cmp eax,RMenuOnMoving |
||
254 | jz RBFixIcons |
||
255 | cmp eax,RMenuAdd |
||
256 | jz RBAdd |
||
257 | cmp eax,RMenuDel |
||
258 | jz RBDelete |
||
259 | cmp eax,RMenuProp |
||
260 | jz RBPropeties |
||
261 | |||
3853 | GerdtR | 262 | |
4146 | GerdtR | 263 | .RBWB: |
4082 | GerdtR | 264 | mov dword[fiRunProg+8],0 |
4146 | GerdtR | 265 | mov dword[fiRunProg+21],eax |
266 | mcall 70,fiRunProg |
||
267 | |||
4082 | GerdtR | 268 | |
4146 | GerdtR | 269 | |
3853 | GerdtR | 270 | |
271 | call MouseInWin |
||
4146 | GerdtR | 272 | jnc .RBWMnoInWin ;если вне окна, то просто восстанавливаем предыдущую кнопку |
273 | |||
4082 | GerdtR | 274 | |
4146 | GerdtR | 275 | and eax,0FFF0h ;нужен только Y, причём округлённый до верхней точки кратной 16(высота кнопки) |
276 | cmp [PredItem],eax |
||
277 | je .RBWMendLightBut |
||
278 | |||
4082 | GerdtR | 279 | |
4146 | GerdtR | 280 | cmp eax,[NumMenuButt] |
281 | jae .RBWMnoInWin |
||
282 | |||
4082 | GerdtR | 283 | |
4146 | GerdtR | 284 | je @f |
285 | |||
4082 | GerdtR | 286 | |
4146 | GerdtR | 287 | |
4082 | GerdtR | 288 | |
4036 | GerdtR | 289 | |
4082 | GerdtR | 290 | |
4146 | GerdtR | 291 | jnc @f |
292 | mcall 37,1 ;положение мыши относительно окна |
||
293 | and eax,0FFF0h ;нужен только Y, причём округлённый до верхней точки кратной 16(высота кнопки) |
||
294 | mov [PredItem],eax |
||
295 | stdcall DrawRBLine,eax,1 |
||
296 | |||
4082 | GerdtR | 297 | |
4036 | GerdtR | 298 | jmp .RBWMendLightBut |
4146 | GerdtR | 299 | |
4036 | GerdtR | 300 | |
301 | |||
4082 | GerdtR | 302 | cmp [PredItem],-1 ;восстановление предыдущей кнопки |
4146 | GerdtR | 303 | je .RBWMendLightBut |
304 | |||
4082 | GerdtR | 305 | |
4146 | GerdtR | 306 | mov [PredItem],-1 |
307 | |||
4082 | GerdtR | 308 | |
309 | mcall 37,2 ;GetMouseKey |
||
4146 | GerdtR | 310 | test eax,111b |
311 | jz RBWMessages |
||
312 | |||
3853 | GerdtR | 313 | |
4146 | GerdtR | 314 | jc RBWMessages |
315 | |||
3853 | GerdtR | 316 | |
317 | cmp [SelIcon],-1 |
||
4146 | GerdtR | 318 | jne @f |
319 | mcall 68,13,[RBMenuCP] ;освобождаем память с подписями и путями к прогам |
||
320 | @@: |
||
4082 | GerdtR | 321 | mov [RButtonActiv],0 |
4146 | GerdtR | 322 | mcall -1 ;ExitProcess |
323 | |||
3853 | GerdtR | 324 | |
325 | |||
326 | mcall 15,3 |
||
4146 | GerdtR | 327 | jmp RBWExit |
328 | |||
3853 | GerdtR | 329 | |
330 | call AlignIcons |
||
4146 | GerdtR | 331 | |
3853 | GerdtR | 332 | |
4146 | GerdtR | 333 | stdcall [ini_enum_sections],IconIni,Ini_SavePos |
334 | |||
3853 | GerdtR | 335 | |
4146 | GerdtR | 336 | mov dword[fiRunProg+21],pthNotify |
337 | mcall 70,fiRunProg |
||
338 | mov [bNotSave],0 |
||
339 | |||
3853 | GerdtR | 340 | |
4146 | GerdtR | 341 | |
3853 | GerdtR | 342 | |
343 | xor dword[bFixIcons],1 |
||
4146 | GerdtR | 344 | |
3853 | GerdtR | 345 | |
4146 | GerdtR | 346 | je @f |
347 | |||
3853 | GerdtR | 348 | |
4146 | GerdtR | 349 | mov dword[fiRunProg+21],pthNotify |
350 | mcall 70,fiRunProg |
||
351 | mov [bNotSave],0 |
||
352 | |||
3853 | GerdtR | 353 | |
354 | jmp RBWExit |
||
4146 | GerdtR | 355 | |
3853 | GerdtR | 356 | |
357 | cmp [DlgAddActiv],1 |
||
4146 | GerdtR | 358 | je RBWSetActivWin |
359 | mov [DlgAddActiv],1 |
||
360 | |||
3921 | mario79 | 361 | |
4146 | GerdtR | 362 | jmp RBWExit |
363 | |||
3853 | GerdtR | 364 | |
365 | mov eax,[SelIcon] |
||
4146 | GerdtR | 366 | lea eax,[IconsID+eax*4] |
4336 | GerdtR | 367 | stdcall [ini_del_section],IconIni,eax |
4146 | GerdtR | 368 | |
3853 | GerdtR | 369 | |
4146 | GerdtR | 370 | mov ebx,[SelIcon] |
4336 | GerdtR | 371 | lea edi,[IconsID+ebx*4] |
7704 | dunkaist | 372 | lea esi,[edi+4] |
4336 | GerdtR | 373 | mov ecx,[MaxNumIcon] |
374 | sub ecx,[SelIcon] |
||
375 | ;dph ecx |
||
376 | test ecx,ecx |
||
377 | jz @f |
||
378 | rep movsd |
||
379 | @@: |
||
380 | ;debug_newline |
||
381 | ;dpsP IconsID+4*0 |
||
382 | ;dps ' ' |
||
383 | ;dpsP IconsID+4*1 |
||
384 | ;dps ' ' |
||
385 | ;dpsP IconsID+4*2 |
||
386 | ;dps ' ' |
||
387 | ;dpsP IconsID+4*3 |
||
388 | ;dps ' ' |
||
389 | ;dpsP IconsID+4*4 |
||
390 | ;dps ' ' |
||
391 | ;dpsP IconsID+4*5 |
||
392 | ;dps ' ' |
||
393 | ;dpsP IconsID+4*6 |
||
394 | ;dps ' ' |
||
395 | ;dpsP IconsID+4*7 |
||
396 | ;dps ' ' |
||
397 | ;dpsP IconsID+4*8 |
||
398 | ;dps ' ' |
||
399 | ;dpsP IconsID+4*9 |
||
400 | ;dps ' ' |
||
401 | ;dpsP IconsID+4*10 |
||
402 | ;dps ' ' |
||
403 | ;dpsP IconsID+4*11 |
||
404 | ;dps ' ' |
||
405 | ;dpsP IconsID+4*12 |
||
406 | ;dps ' ' |
||
407 | ;dpsP IconsID+4*13 |
||
408 | ;dps ' ' |
||
409 | ;dpsP IconsID+4*14 |
||
410 | ;dps ' ' |
||
411 | ;dpsP IconsID+4*15 |
||
412 | ;dps ' ' |
||
413 | ;dpsP IconsID+4*16 |
||
414 | ;dps ' ' |
||
415 | ;dpsP IconsID+4*17 |
||
416 | ;debug_newline |
||
417 | |||
3853 | GerdtR | 418 | |
4336 | GerdtR | 419 | |
4146 | GerdtR | 420 | mov dword[fiRunProg+21],pthNotify |
421 | mcall 70,fiRunProg |
||
422 | mov [bNotSave],0 |
||
423 | |||
3853 | GerdtR | 424 | |
4146 | GerdtR | 425 | |
3853 | GerdtR | 426 | |
427 | cmp [DlgAddActiv],1 |
||
4146 | GerdtR | 428 | je RBWSetActivWin |
429 | mov [DlgAddActiv],1 |
||
430 | |||
3921 | mario79 | 431 | |
4146 | GerdtR | 432 | jmp RBWExit |
433 | |||
3853 | GerdtR | 434 | |
3921 | mario79 | 435 | mcall 18,3,[slotDlgAdd] |
4146 | GerdtR | 436 | jmp RBWExit |
437 | |||
3853 | GerdtR | 438 | |
4082 | GerdtR | 439 | |
440 | |||
4146 | GerdtR | 441 | mov bx,[RMenuW] |
442 | add ebx,2*10000h-3 |
||
443 | mov ecx,[y] |
||
444 | add ecx,2 |
||
445 | shl ecx,16 |
||
446 | mov cx,16;-1-2 |
||
447 | cmp [active],1 |
||
448 | jne @f |
||
449 | mov edx,[sc.work_button] |
||
450 | jmp .L1 |
||
451 | @@: |
||
4082 | GerdtR | 452 | mov edx,[sc.work] |
4146 | GerdtR | 453 | .L1: |
4082 | GerdtR | 454 | mcall 13 |
4146 | GerdtR | 455 | |
4082 | GerdtR | 456 | |
457 | xor ebx,ebx ;верх |
||
4146 | GerdtR | 458 | mov bx,[RMenuW] |
459 | add ebx,2*10000h-3 |
||
460 | mov cx,word[y] |
||
461 | shl ecx,16 |
||
462 | mov cx,word[y] |
||
463 | add ecx,00020002h |
||
464 | |||
4082 | GerdtR | 465 | |
4146 | GerdtR | 466 | jne @f |
467 | mov edx,[sc.workL] |
||
468 | jmp .L3 |
||
469 | @@: |
||
4082 | GerdtR | 470 | mov edx,[sc.work] |
4146 | GerdtR | 471 | .L3: |
4082 | GerdtR | 472 | |
473 | |||
4146 | GerdtR | 474 | |
4082 | GerdtR | 475 | |
4146 | GerdtR | 476 | mov cx,word[y] |
477 | shl ecx,16 |
||
478 | mov cx,word[y] |
||
479 | add ecx,00020002h+16 |
||
480 | |||
4082 | GerdtR | 481 | |
4146 | GerdtR | 482 | jne @f |
483 | mov edx,[sc.workL] |
||
484 | |||
4082 | GerdtR | 485 | |
486 | |||
487 | |||
4146 | GerdtR | 488 | |
4082 | GerdtR | 489 | |
4146 | GerdtR | 490 | mov bx,[RMenuW] |
491 | add ebx,2*10000h-3 |
||
492 | mov cx,word[y] |
||
493 | shl ecx,16 |
||
494 | mov cx,word[y] |
||
495 | add ecx,16*10000h+16+00020002h |
||
496 | |||
4082 | GerdtR | 497 | |
4146 | GerdtR | 498 | jne @f |
499 | mov edx,[sc.workH] |
||
500 | @@: |
||
4082 | GerdtR | 501 | |
502 | |||
4146 | GerdtR | 503 | |
4082 | GerdtR | 504 | |
4146 | GerdtR | 505 | shl ebx,16 |
506 | mov bx,[RMenuW] |
||
507 | add ebx,-2*10000h-2 |
||
508 | mov cx,word[y] |
||
509 | shl ecx,16 |
||
510 | mov cx,word[y] |
||
511 | add ecx,00020002h+16 |
||
512 | |||
4082 | GerdtR | 513 | |
4146 | GerdtR | 514 | jne @f |
515 | mov edx,[sc.workH] |
||
516 | @@: |
||
4082 | GerdtR | 517 | |
518 | |||
4146 | GerdtR | 519 | |
4082 | GerdtR | 520 | |
4146 | GerdtR | 521 | shr eax,4 |
522 | mov edx,[RBMenuCP+eax*8] |
||
523 | |||
4082 | GerdtR | 524 | |
4146 | GerdtR | 525 | mov ebx,[y] |
526 | add ebx,7*10000h+7 |
||
527 | |||
4082 | GerdtR | 528 | |
4146 | GerdtR | 529 | jne @f |
530 | mov ecx,[sc.work_button_text] |
||
531 | jmp .L2 |
||
532 | @@: |
||
4082 | GerdtR | 533 | mov ecx,[sc.work_text] |
4146 | GerdtR | 534 | .L2: |
4082 | GerdtR | 535 | |
536 | |||
4146 | GerdtR | 537 | |
4082 | GerdtR | 538 | |
4146 | GerdtR | 539 | |
4082 | GerdtR | 540 | |
4146 | GerdtR | 541 | endp |
4082 | GerdtR | 542 | |
543 | |||
544 | mcall 37,0 ;GetMousePos |
||
4146 | GerdtR | 545 | xor ebx,ebx |
546 | mov bx,ax ;y |
||
547 | shr eax,16 ;x |
||
548 | |||
3853 | GerdtR | 549 | |
4146 | GerdtR | 550 | mov cx,bx |
551 | mov bx,ax |
||
552 | |||
4036 | GerdtR | 553 | |
4146 | GerdtR | 554 | cmp eax,[RBSlot] |
555 | jne @f |
||
556 | stc |
||
557 | ret |
||
558 | @@: |
||
4036 | GerdtR | 559 | clc |
4146 | GerdtR | 560 | ret |
561 | endp |
||
4036 | GerdtR | 562 | |
563 | |||
3853 | GerdtR | 564 | local posX:WORD,\ |
565 | posY:WORD,\ |
||
566 | negatX:WORD,\ |
||
567 | negatY:WORD |
||
568 | |||
569 | |||
4146 | GerdtR | 570 | |
3853 | GerdtR | 571 | |
4146 | GerdtR | 572 | test ecx,ecx |
573 | jnz .AlignIco |
||
574 | ret |
||
575 | .AlignIco: |
||
3853 | GerdtR | 576 | push ecx |
4146 | GerdtR | 577 | or ecx,-1 |
578 | mov edi,dword[IconsOffs+ebx] |
||
579 | xor eax,eax |
||
580 | repne scasb |
||
581 | repne scasb |
||
582 | repne scasb |
||
583 | repne scasb |
||
584 | |||
3853 | GerdtR | 585 | |
4146 | GerdtR | 586 | |
3853 | GerdtR | 587 | |
588 | mov ax,[edi+2] |
||
4146 | GerdtR | 589 | test ax,8000h |
590 | jz @f |
||
591 | neg ax |
||
592 | mov word[negatX],1 |
||
593 | @@: |
||
3853 | GerdtR | 594 | mov [posX],ax |
4146 | GerdtR | 595 | |
3853 | GerdtR | 596 | |
4146 | GerdtR | 597 | test ax,8000h |
598 | jz @f |
||
599 | neg ax |
||
600 | mov word[negatY],1 |
||
601 | @@: |
||
3853 | GerdtR | 602 | mov [posY],ax |
4146 | GerdtR | 603 | |
3853 | GerdtR | 604 | |
605 | mov ax,[posY] |
||
4146 | GerdtR | 606 | mov dx,ALIGN_SIZE |
607 | |||
3853 | GerdtR | 608 | |
4146 | GerdtR | 609 | jb .AI0 |
610 | @@: sub ax,dx |
||
611 | cmp ax,dx |
||
612 | jae @b |
||
613 | .AI0: |
||
3853 | GerdtR | 614 | |
615 | |||
4146 | GerdtR | 616 | cmp dx,ALIGN_SIZE/2 |
617 | jb .AI1 |
||
618 | |||
3853 | GerdtR | 619 | |
4146 | GerdtR | 620 | sub ax,dx |
621 | add [posY],ax |
||
622 | |||
3853 | GerdtR | 623 | |
4146 | GerdtR | 624 | .AI1: |
3853 | GerdtR | 625 | sub [posY],dx |
4146 | GerdtR | 626 | .AI2: |
3853 | GerdtR | 627 | ;----- |
628 | mov ax,[posX] |
||
4146 | GerdtR | 629 | mov dx,ALIGN_SIZE |
630 | |||
3853 | GerdtR | 631 | |
4146 | GerdtR | 632 | jb .AI3 |
633 | @@: sub ax,dx |
||
634 | cmp ax,dx |
||
635 | jae @b |
||
636 | .AI3: |
||
3853 | GerdtR | 637 | |
638 | |||
4146 | GerdtR | 639 | cmp dx,ALIGN_SIZE/2 |
640 | jb .AI4 |
||
641 | |||
3853 | GerdtR | 642 | |
4146 | GerdtR | 643 | sub ax,dx |
644 | add [posX],ax |
||
645 | |||
3853 | GerdtR | 646 | |
4146 | GerdtR | 647 | .AI4: |
3853 | GerdtR | 648 | sub [posX],dx |
4146 | GerdtR | 649 | .AI5: |
3853 | GerdtR | 650 | |
651 | |||
652 | mov ax,[posX] |
||
4146 | GerdtR | 653 | |
3853 | GerdtR | 654 | |
4146 | GerdtR | 655 | jne @f |
656 | neg ax |
||
657 | inc ax |
||
658 | jmp .AI6 |
||
659 | @@: |
||
3853 | GerdtR | 660 | |
661 | |||
4146 | GerdtR | 662 | shr dx,1 |
663 | add dx,[wsX] |
||
664 | cmp ax,dx |
||
665 | jbe .AI6 |
||
666 | sub ax,[wsW] |
||
667 | .AI6: |
||
3853 | GerdtR | 668 | mov word[edi+2],ax |
4146 | GerdtR | 669 | |
3853 | GerdtR | 670 | |
671 | |||
4146 | GerdtR | 672 | cmp [negatY],1 |
673 | jne @f |
||
674 | neg ax |
||
675 | inc ax |
||
676 | jmp .AI7 |
||
677 | @@: |
||
3853 | GerdtR | 678 | |
679 | |||
4146 | GerdtR | 680 | shr dx,1 |
681 | add dx,[wsY] |
||
682 | cmp ax,dx |
||
683 | jbe .AI7 |
||
684 | sub ax,[wsH] |
||
685 | .AI7: |
||
3853 | GerdtR | 686 | mov word[edi],ax |
4146 | GerdtR | 687 | |
3853 | GerdtR | 688 | |
689 | |||
690 | |||
691 | |||
692 | |||
4146 | GerdtR | 693 | add ebx,4 |
694 | dec ecx |
||
695 | jnz .AlignIco |
||
696 | ; loop .AlignIco |
||
3853 | GerdtR | 697 | |
698 | |||
699 | |||
700 | ; mcall 70,fInfo |
||
701 | ret |
||
4146 | GerdtR | 702 | endp |
3853 | GerdtR | 703 | |
704 | |||
705 | proc GetUserBut stdcall,f_name,sec_name,key_name,key_value |
||
706 | cmp [NumMenuButt],MAX_USER_BUTTONS |
||
4146 | GerdtR | 707 | jne @f |
708 | ret |
||
709 | @@: |
||
3853 | GerdtR | 710 | |
711 | |||
4146 | GerdtR | 712 | |
3853 | GerdtR | 713 | |
4146 | GerdtR | 714 | xor eax,eax |
715 | or ecx,-1 |
||
716 | repne scasb |
||
717 | sub edi,[key_name] |
||
718 | mov eax,edi |
||
719 | shl eax,1 |
||
720 | lea eax,[eax*2+eax+5*2] |
||
721 | cmp ax,[RMenuW] |
||
722 | jbe @f |
||
723 | mov [RMenuW],ax |
||
724 | @@: |
||
3853 | GerdtR | 725 | |
726 | |||
4146 | GerdtR | 727 | |
3853 | GerdtR | 728 | |
4146 | GerdtR | 729 | mov edi,[RBMenuCP+ebx*8] |
730 | @@: lodsb |
||
3853 | GerdtR | 731 | stosb |
4146 | GerdtR | 732 | test al,al |
733 | jnz @b |
||
734 | |||
3853 | GerdtR | 735 | |
736 | |||
4146 | GerdtR | 737 | mov esi,[key_value] |
738 | @@: lodsb |
||
3853 | GerdtR | 739 | stosb |
4146 | GerdtR | 740 | test al,al |
741 | jnz @b |
||
742 | |||
3853 | GerdtR | 743 | |
4146 | GerdtR | 744 | |
3853 | GerdtR | 745 | |
4146 | GerdtR | 746 | |
3853 | GerdtR | 747 | |
4146 | GerdtR | 748 | mov eax,1 |
749 | ret |
||
750 | endp |
||
3853 | GerdtR | 751 | |
752 | |||
753 | push ebx edi esi |
||
4146 | GerdtR | 754 | |
3921 | mario79 | 755 | |
4336 | GerdtR | 756 | xor eax,eax |
757 | mov ax,[ebx] |
||
758 | |||
759 | |||
4146 | GerdtR | 760 | .SearchSect: |
3853 | GerdtR | 761 | cmp eax,[IconsID+ebx*4] |
4336 | GerdtR | 762 | je .IcoDataFound |
763 | |||
3853 | GerdtR | 764 | |
4146 | GerdtR | 765 | cmp ebx,[MaxNumIcon] |
766 | jb .SearchSect |
||
767 | |||
3853 | GerdtR | 768 | |
4146 | GerdtR | 769 | pop esi edi ebx |
770 | ret |
||
771 | |||
3853 | GerdtR | 772 | |
773 | xor al,al |
||
4336 | GerdtR | 774 | mov edi,[IconsOffs+ebx*4] |
775 | |||
776 | |||
4146 | GerdtR | 777 | repne scasb |
778 | repne scasb |
||
779 | repne scasb |
||
780 | repne scasb |
||
4336 | GerdtR | 781 | |
3853 | GerdtR | 782 | |
4336 | GerdtR | 783 | test eax,8000h |
4146 | GerdtR | 784 | jz @f |
785 | or eax,0FFFF0000h |
||
786 | @@: |
||
3853 | GerdtR | 787 | |
788 | |||
4336 | GerdtR | 789 | |
3853 | GerdtR | 790 | |
4336 | GerdtR | 791 | |
792 | |||
4146 | GerdtR | 793 | jz @f |
794 | or eax,0FFFF0000h |
||
795 | @@: |
||
3853 | GerdtR | 796 | |
797 | |||
4336 | GerdtR | 798 | |
3853 | GerdtR | 799 | |
4146 | GerdtR | 800 | pop esi edi ebx |
801 | ret |
||
802 | endp |
||
3853 | GerdtR | 803 |