Author Topic: Lepenie okien na okraj obrazofky  (Read 939 times)

pr0p4g4nd4

  • [SCF]
  • Senior Member
  • ****
  • Posts: 429
Lepenie okien na okraj obrazofky
« on: May 06, 2008, 12:17:43 PM »
Zdravim mladez,
potrebujem pomoct s jednym kodom. Konkretne mi ide o to aby som z c kodu dostal asm kod(tj dissam kod). Ide mi o tento kod:

Code: [Select]
case WM_MOVING:
    long scrx, scry;
    RECT * rect;
    rect = (RECT *)lParam;
    scrx = GetSystemMetrics(SM_CXSCREEN);
    scry = GetSystemMetrics(SM_CYSCREEN);
    if(rect->right > scrx)
        OffsetRect(rect, scrx - rect->right, 0);
    if(rect->bottom > scry)
        OffsetRect(rect, 0, scry - rect->bottom);
    if(rect->left < 0)
        OffsetRect(rect, -rect->left, 0);
    if(rect->top < 0)
        OffsetRect(rect, 0, -rect->top);
    return true;
Aký je rozdiel medzi mladým a starým chlapom?
Mladému behá piča po rozume, starému po byte...

Kto robí je robot, kto koktá je.. koktavý!

CZerezpiCZkin

  • Junior Member
  • ***
  • Posts: 181
Re: Lepenie okien na okraj obrazofky
« Reply #1 on: May 06, 2008, 02:33:43 PM »
Zdar.
Neviem, ci som pochopil o co ti ide. Ty chces ten kod prepisat do asm? O co konkretne ti ide - o pouzitie funkcie alebo o tu naslednu komparaciu a vyhodnotenie?

Ale skusim odpovedat, snad trafim to, co si chcel vediet...Musis na to ist zo strany funkcnosti. Zakladom je teda funkcia GetSystemMetrics - syntax si najdes v helpe:
          http://msdn.microsoft.com/en-us/library/ms724385.aspx
          http://msdn.microsoft.com/en-us/library/aa227571(VS.60).aspx
Tiez si tam najdes, co musis naskladat do zasobnika a aj co a kam ti funkcia vrati. Potom to uz len porovnavas medzi sebou (CMP alebo niektorym z dalsich sposobov...).
Staci tak?
CZpCZ

HypnotiX

  • [CSCF]
  • Newbie
  • ***
  • Posts: 43
Re: Lepenie okien na okraj obrazofky
« Reply #2 on: May 06, 2008, 03:47:26 PM »
Code: [Select]
NaMoving proc uses esi edi ecx edx ebx lParam:DWORD
mov ebx,dword ptr[lParam]
invoke GetSystemMetrics,SM_CXSCREEN
mov esi,eax
invoke GetSystemMetrics,SM_CYSCREEN
mov edi,eax
.if [ebx+RECT.right]>esi
mov eax,esi
sub eax,[ebx+RECT.right]
invoke OffsetRect,lParam,eax,0
.endif
.if [ebx+RECT.bottom]>edi
mov eax,edi
sub eax,[ebx+RECT.bottom]
invoke OffsetRect,lParam,0,eax
.endif
.if sdword ptr[ebx+RECT.left]<0
mov eax,[ebx+RECT.left]
neg eax
invoke OffsetRect,lParam,eax,0
.endif
.if sdword ptr[ebx+RECT.top]<0
mov eax,[ebx+RECT.top]
neg eax
invoke OffsetRect,lParam,0,eax
.endif
xor eax,eax
inc eax
ret

NaMoving endp
...
elseif uMsg==WM_MOVING
invoke NaMoving,lParam
...


Je to pro Masm

pr0p4g4nd4

  • [SCF]
  • Senior Member
  • ****
  • Posts: 429
Re: Lepenie okien na okraj obrazofky
« Reply #3 on: May 07, 2008, 10:01:23 AM »
2CZpCZ: No ide mi o to aby mi okno v mojom malom asm projektiku zasekavalao na okraji obrazovky. V asm to potrebujem preto lebo ten projektik programujem v masme - a nie som schopny z toho c kodu dostat kod ktory by som bol schopny pouzit..

Som schopny rozoznat ake api sa tam pouzivaju ale kedze to robim v asm tak potrebujem vediet presne ako kod funguje.. Takze tak..

2HypnotiX: Krasne.. fenkju :)
Aký je rozdiel medzi mladým a starým chlapom?
Mladému behá piča po rozume, starému po byte...

Kto robí je robot, kto koktá je.. koktavý!