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