0,0 → 1,121 |
proc MovingWnd |
local MySlot:DWORD |
mcall 40,0 ;SetMaskMessage 000b |
|
mcall 12,1 ;RedrawWinBeg |
|
mcall 14 |
xor ebx,ebx |
xor ecx,ecx |
mov cx,ax |
shr eax,16 |
mov cx,ax |
dec ebx |
dec ecx |
mcall 0,,,01000000h |
;mcall 0,IMG_SIZE,IMG_SIZE,01000000h |
mcall 12,2 ;RedrawWinEnd |
|
|
mov eax,[SelIcon] |
call DrawIconToArea |
|
mcall 37,4,IconArea,10100002h |
push eax |
test eax,eax |
jz @f |
mov ecx,eax |
mcall 37,5 |
|
@@: |
mcall 9,RBProcInfo,-1 ;+30 |
mcall 18,21,dword[RBProcInfo+30] |
mov [MySlot],eax |
|
.messages: |
cmp [MovingActiv],1 |
jne .close |
mcall 18,7 |
cmp eax,[MySlot] |
je @f |
mcall 18,3,[MySlot] |
@@: |
|
mcall 5,1 ;Yield |
jmp .messages |
|
.close: |
pop ecx |
test ecx,ecx |
jz @f |
mcall 37,6 |
@@: |
|
|
mcall -1 |
|
endp |
|
|
|
;eax = NumIcon |
proc DrawIconToArea ;¯à¥¤ § ç¥ ¤«ï ¨ª®®ª à §¬¥à®¬ = 32x32 |
push edi esi |
|
;mov eax,[NumIcon] |
mov edi,[IconsOffs+eax*4] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
mov al,[edi] |
cmp al,'9' |
ja .PathToIcon |
cmp al,'/' |
jne .GetIconInd |
.PathToIcon: |
mov al,30h ;§ £«ãèª !!!!!!!!!!!!! |
mov byte[edi+1],0 |
.GetIconInd: |
;int3 |
sub al,30h |
cmp byte[edi+1],0 |
je @f |
shl eax,1 |
lea eax,[eax*4+eax] |
xor edx,edx |
mov dl,[edi+1] |
sub dl,30h |
add eax,edx |
@@: ;eax=num icon |
cmp eax,[icon_count] |
jb @f |
xor eax,eax |
@@: |
test eax,eax |
je .DIA |
mov ecx,eax |
xor eax,eax |
@@: |
add eax,32*32*4;IMG_SIZE*IMG_SIZE*4 |
loop @b |
.DIA: |
mov esi,eax |
add esi,[raw_pointer] |
add esi,44 |
|
mov edi,IconArea;+((IMAGE_TOP_Y*ICON_SIZE)+((ICON_SIZE-IMG_SIZE)/2))*4 |
;int3 |
mov eax,32;IMG_SIZE |
mov edx,eax |
@@: |
mov ecx,eax |
rep movsd |
; add edi,32*4 |
dec edx |
jnz @b |
|
pop esi edi |
ret |
endp |