3U
git-svn-id: https://svn.code.sf.net/p/kolmck/code@83 91bb2d04-0c0c-4d2d-88a5-bbb6f4c1fa07
This commit is contained in:
366
KOL_ASM.inc
366
KOL_ASM.inc
@ -1,6 +1,6 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// KOL_ASM.inc ()to be inlude in KOL.pas)
|
// KOL_ASM.inc ()to be inlude in KOL.pas)
|
||||||
// v 3.00.o
|
// v 3.00.u
|
||||||
|
|
||||||
function MsgBox( const S: KOLString; Flags: DWORD ): DWORD;
|
function MsgBox( const S: KOLString; Flags: DWORD ): DWORD;
|
||||||
asm
|
asm
|
||||||
@ -2515,41 +2515,6 @@ asm
|
|||||||
POP EBX
|
POP EBX
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function S2Int( S: PAnsiChar ): Integer;
|
|
||||||
asm
|
|
||||||
XCHG EDX, EAX
|
|
||||||
XOR EAX, EAX
|
|
||||||
TEST EDX, EDX
|
|
||||||
JZ @@exit
|
|
||||||
|
|
||||||
XOR ECX, ECX
|
|
||||||
MOV CL, [EDX]
|
|
||||||
INC EDX
|
|
||||||
CMP CL, '-'
|
|
||||||
PUSHFD
|
|
||||||
JE @@0
|
|
||||||
@@1: CMP CL, '+'
|
|
||||||
JNE @@2
|
|
||||||
@@0: MOV CL, [EDX]
|
|
||||||
INC EDX
|
|
||||||
@@2: SUB CL, '0'
|
|
||||||
CMP CL, '9'-'0'
|
|
||||||
JA @@fin
|
|
||||||
LEA EAX, [EAX+EAX*4] //
|
|
||||||
LEA EAX, [ECX+EAX*2] //
|
|
||||||
JMP @@0
|
|
||||||
@@fin: POPFD
|
|
||||||
JNE @@exit
|
|
||||||
NEG EAX
|
|
||||||
@@exit:
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Str2Int(const Value : AnsiString) : Integer;
|
|
||||||
asm
|
|
||||||
CALL EAX2PChar
|
|
||||||
CALL S2Int
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Trim( const S : KOLString): KOLString;
|
function Trim( const S : KOLString): KOLString;
|
||||||
asm
|
asm
|
||||||
PUSH EDX
|
PUSH EDX
|
||||||
@ -4193,11 +4158,14 @@ function WndProcParentResize( Self_: PControl; var Msg: TMsg; var Rslt: Integer
|
|||||||
asm
|
asm
|
||||||
CMP word ptr [EDX].TMsg.message, CM_SIZE
|
CMP word ptr [EDX].TMsg.message, CM_SIZE
|
||||||
JNZ @@exit
|
JNZ @@exit
|
||||||
|
PUSH EAX
|
||||||
PUSH 0
|
PUSH 0
|
||||||
PUSH 0
|
PUSH 0
|
||||||
PUSH WM_SIZE
|
PUSH WM_SIZE
|
||||||
PUSH EAX
|
PUSH EAX
|
||||||
CALL TControl.Perform
|
CALL TControl.Perform
|
||||||
|
POP EAX
|
||||||
|
CALL TControl.Invalidate
|
||||||
@@exit: XOR EAX, EAX
|
@@exit: XOR EAX, EAX
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4296,7 +4264,7 @@ asm
|
|||||||
CMP EDX, NM_RCLICK
|
CMP EDX, NM_RCLICK
|
||||||
JNE @@chk_killfocus
|
JNE @@chk_killfocus
|
||||||
{$IFDEF USE_FLAGS}
|
{$IFDEF USE_FLAGS}
|
||||||
MOV CL, G6_RightClick
|
MOV CL, 1 shl G6_RightClick
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
INC ECX
|
INC ECX
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -4309,8 +4277,8 @@ asm
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
{$IFDEF EVENTS_DYNAMIC}
|
{$IFDEF EVENTS_DYNAMIC}
|
||||||
MOV EAX, [EAX].TControl.EV
|
MOV ECX, [EAX].TControl.EV
|
||||||
MOV ECX, [EAX].TEvents.fOnClick.TMethod.Code
|
MOV ECX, [ECX].TEvents.fOnClick.TMethod.Code
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
MOV ECX, [EAX].TControl.EV.fOnClick.TMethod.Code
|
MOV ECX, [EAX].TControl.EV.fOnClick.TMethod.Code
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -4641,7 +4609,7 @@ asm //cmd //opd
|
|||||||
{$IFDEF EVENTS_DYNAMIC}
|
{$IFDEF EVENTS_DYNAMIC}
|
||||||
MOV EAX, [EAX].TEvents.fOnSelChange.TMethod.Data
|
MOV EAX, [EAX].TEvents.fOnSelChange.TMethod.Data
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
MOV EAX, [EBX].TControl.fOnSelChange.TMethod.Data
|
MOV EAX, [EBX].TControl.EV.fOnSelChange.TMethod.Data
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
CALL ECX
|
CALL ECX
|
||||||
JMP @@ret_false
|
JMP @@ret_false
|
||||||
@ -5442,30 +5410,40 @@ asm
|
|||||||
@@MWheel:ADD ESI, 32
|
@@MWheel:ADD ESI, 32
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFNDEF USE_GRAPHCTLS}
|
{$IFnDEF USE_GRAPHCTLS}
|
||||||
{$IFNDEF NEW_MODAL}
|
{$IFnDEF NEW_MODAL}
|
||||||
|
{$IFnDEF USE_MDI}
|
||||||
function TControl.WndProc( var Msg: TMsg ): Integer;
|
function TControl.WndProc( var Msg: TMsg ): Integer;
|
||||||
asm //cmd //opd
|
asm //cmd //opd
|
||||||
PUSH EBX
|
PUSH EBX
|
||||||
PUSH ESI
|
PUSH ESI
|
||||||
PUSH EDI
|
PUSH EDI
|
||||||
|
PUSH EBP
|
||||||
|
//MOV ESI, EAX
|
||||||
XCHG ESI, EAX
|
XCHG ESI, EAX
|
||||||
MOV EDI, EDX
|
MOV EDI, EDX
|
||||||
|
//CALL TControl.RefInc
|
||||||
|
MOV EBP, [ESI].TControl.PP.fPass2DefProc
|
||||||
|
|
||||||
XOR EAX, EAX
|
XOR EAX, EAX
|
||||||
CMP EAX, [EDX].TMsg.hWnd
|
CMP EAX, [EDI].TMsg.hWnd
|
||||||
JE @@1
|
JE @@1
|
||||||
CMP EAX, [ESI].TControl.fHandle
|
CMP EAX, [ESI].TControl.fHandle
|
||||||
JNE @@1
|
JNE @@1
|
||||||
{$IFDEF USE_GRAPHCTLS}
|
{$IFDEF USE_GRAPHCTLS}
|
||||||
|
{$IFDEF USE_FLAGS}
|
||||||
|
TEST [ESI].TControl.fFlagsG6, 1 shl G6_GraphicCtl
|
||||||
|
{$ELSE}
|
||||||
CMP [ESI].TControl.fWindowed, AL
|
CMP [ESI].TControl.fWindowed, AL
|
||||||
|
{$ENDIF}
|
||||||
JNE @@1
|
JNE @@1
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
MOV EAX, [EDX].TMsg.hWnd
|
MOV EAX, [EDI].TMsg.hWnd
|
||||||
MOV [ESI].TControl.fHandle, EAX
|
MOV [ESI].TControl.fHandle, EAX
|
||||||
@@1:
|
@@1:
|
||||||
XOR eax, eax
|
XOR eax, eax
|
||||||
|
|
||||||
CMP [AppletRunning], 0
|
CMP [AppletRunning], AL
|
||||||
JZ @@dyn2
|
JZ @@dyn2
|
||||||
MOV ECX, [Applet]
|
MOV ECX, [Applet]
|
||||||
JECXZ @@dyn2
|
JECXZ @@dyn2
|
||||||
@ -5481,20 +5459,9 @@ asm //cmd //opd
|
|||||||
MOV EAX, ESI
|
MOV EAX, ESI
|
||||||
CALL @@callonmes
|
CALL @@callonmes
|
||||||
|
|
||||||
@@flicksproc:
|
//**********************************************************
|
||||||
(*
|
|
||||||
MOV EAX, ESI
|
|
||||||
MOV EDX, EDI
|
|
||||||
PUSH 0
|
|
||||||
MOV ECX, ESP
|
|
||||||
CALL dword ptr [ESI].TControl.PP.fWndProcResizeFlicks
|
|
||||||
TEST AL, AL
|
|
||||||
POP EAX
|
|
||||||
JNZ @@pass2defproc
|
|
||||||
*)
|
|
||||||
|
|
||||||
MOVZX EAX, word ptr [EDI].TMsg.message
|
MOVZX EAX, word ptr [EDI].TMsg.message
|
||||||
CMP EAX, WM_CLOSE
|
CMP AX, WM_CLOSE
|
||||||
JNZ @@chk_WM_DESTROY
|
JNZ @@chk_WM_DESTROY
|
||||||
|
|
||||||
CMP ESI, [Applet]
|
CMP ESI, [Applet]
|
||||||
@ -5506,6 +5473,7 @@ asm //cmd //opd
|
|||||||
@@postquit:
|
@@postquit:
|
||||||
PUSH 0
|
PUSH 0
|
||||||
CALL PostQuitMessage
|
CALL PostQuitMessage
|
||||||
|
MOV byte ptr [AppletTerminated], 1
|
||||||
JMP @@calldef
|
JMP @@calldef
|
||||||
//********************************************************** Added By M.Gerasimov
|
//********************************************************** Added By M.Gerasimov
|
||||||
@@chk_WM_DESTROY:
|
@@chk_WM_DESTROY:
|
||||||
@ -5527,6 +5495,11 @@ asm //cmd //opd
|
|||||||
PUSH offset[ID_SELF]
|
PUSH offset[ID_SELF]
|
||||||
PUSH [ESI].fHandle
|
PUSH [ESI].fHandle
|
||||||
CALL RemoveProp
|
CALL RemoveProp
|
||||||
|
{$ELSE}
|
||||||
|
PUSH 0
|
||||||
|
PUSH GWL_USERDATA
|
||||||
|
PUSH [ESI].fHandle
|
||||||
|
CALL SetWindowLong
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
//**********************************************************
|
//**********************************************************
|
||||||
|
|
||||||
@ -5561,6 +5534,8 @@ asm //cmd //opd
|
|||||||
JZ @@ret
|
JZ @@ret
|
||||||
POP EDX // pop retaddr
|
POP EDX // pop retaddr
|
||||||
JMP @@pass2defproc
|
JMP @@pass2defproc
|
||||||
|
|
||||||
|
//**************************************************************
|
||||||
@@chk_WM_SIZE:
|
@@chk_WM_SIZE:
|
||||||
CMP AX, WM_SIZE
|
CMP AX, WM_SIZE
|
||||||
JNE @@chk_WM_SYSCOMMAND //@@chk_WM_SHOWWINDOW
|
JNE @@chk_WM_SYSCOMMAND //@@chk_WM_SHOWWINDOW
|
||||||
@ -5581,9 +5556,11 @@ asm //cmd //opd
|
|||||||
CALL dword ptr [Global_Align]
|
CALL dword ptr [Global_Align]
|
||||||
@@doGlobalAlignSelf:
|
@@doGlobalAlignSelf:
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
XCHG EAX, ESI
|
MOV EAX, ESI
|
||||||
CALL dword ptr [Global_Align]
|
CALL dword ptr [Global_Align]
|
||||||
JMP @@popeax_exit // fPass2DefProc not needed, CallDefWndProc already called
|
JMP @@popeax_exit // fPass2DefProc not needed, CallDefWndProc already called
|
||||||
|
|
||||||
|
//**************************************************************
|
||||||
@@chk_WM_SYSCOMMAND:
|
@@chk_WM_SYSCOMMAND:
|
||||||
CMP AX, WM_SYSCOMMAND
|
CMP AX, WM_SYSCOMMAND
|
||||||
JNE @@chk_WM_SETFOCUS
|
JNE @@chk_WM_SETFOCUS
|
||||||
@ -5610,6 +5587,7 @@ asm //cmd //opd
|
|||||||
@@ret_0:
|
@@ret_0:
|
||||||
JMP @@0pass2defproc
|
JMP @@0pass2defproc
|
||||||
|
|
||||||
|
//***************************************************************
|
||||||
@@chk_WM_SETFOCUS:
|
@@chk_WM_SETFOCUS:
|
||||||
CMP AX, WM_SETFOCUS
|
CMP AX, WM_SETFOCUS
|
||||||
JNE @@chk_WM_CTLCOLOR //@@chk_WM_SETCURSOR
|
JNE @@chk_WM_CTLCOLOR //@@chk_WM_SETCURSOR
|
||||||
@ -5628,6 +5606,7 @@ asm //cmd //opd
|
|||||||
DEC [ESI].TControl.fClickDisabled
|
DEC [ESI].TControl.fClickDisabled
|
||||||
JMP @@exit
|
JMP @@exit
|
||||||
|
|
||||||
|
//**************************************************************
|
||||||
@@chk_WM_CTLCOLOR:
|
@@chk_WM_CTLCOLOR:
|
||||||
MOV EDX, EAX
|
MOV EDX, EAX
|
||||||
SUB DX, WM_CTLCOLORMSGBOX
|
SUB DX, WM_CTLCOLORMSGBOX
|
||||||
@ -5642,8 +5621,8 @@ asm //cmd //opd
|
|||||||
CALL SendMessage
|
CALL SendMessage
|
||||||
JMP @@pass2defproc
|
JMP @@pass2defproc
|
||||||
|
|
||||||
|
//**************************************************************
|
||||||
@@chk_WM_COMMAND:
|
@@chk_WM_COMMAND:
|
||||||
//CMP word ptr [EDI].TMsg.message, WM_COMMAND
|
|
||||||
CMP AX, WM_COMMAND
|
CMP AX, WM_COMMAND
|
||||||
JNE @@chk_WM_KEY
|
JNE @@chk_WM_KEY
|
||||||
|
|
||||||
@ -5666,6 +5645,7 @@ asm //cmd //opd
|
|||||||
CALL SendMessage
|
CALL SendMessage
|
||||||
JMP @@pass2defproc
|
JMP @@pass2defproc
|
||||||
|
|
||||||
|
//**************************************************************
|
||||||
@@chk_WM_KEY:
|
@@chk_WM_KEY:
|
||||||
MOV EDX, EAX
|
MOV EDX, EAX
|
||||||
SUB DX, WM_KEYFIRST
|
SUB DX, WM_KEYFIRST
|
||||||
@ -5760,7 +5740,7 @@ asm //cmd //opd
|
|||||||
JMP @@pass2defproc
|
JMP @@pass2defproc
|
||||||
|
|
||||||
@@calldef:
|
@@calldef:
|
||||||
XCHG EAX, ESI
|
MOV EAX, ESI
|
||||||
MOV EDX, EDI
|
MOV EDX, EDI
|
||||||
CALL TControl.CallDefWndProc
|
CALL TControl.CallDefWndProc
|
||||||
JMP @@exit
|
JMP @@exit
|
||||||
@ -5778,18 +5758,24 @@ asm //cmd //opd
|
|||||||
{$ENDIF USE_fNCDestroyed}
|
{$ENDIF USE_fNCDestroyed}
|
||||||
|
|
||||||
MOV ECX, ESP
|
MOV ECX, ESP
|
||||||
XCHG EAX, ESI
|
MOV EAX, ESI
|
||||||
MOV EDX, EDI
|
MOV EDX, EDI
|
||||||
CALL dword ptr[EAX].PP.fPass2DefProc
|
CALL EBP
|
||||||
@@popeax_exit:
|
@@popeax_exit:
|
||||||
POP EAX
|
POP EAX
|
||||||
|
|
||||||
@@exit:
|
@@exit:
|
||||||
|
{XCHG ESI, EAX
|
||||||
|
CALL TControl.RefDec
|
||||||
|
XCHG EAX, ESI}
|
||||||
|
|
||||||
|
POP EBP
|
||||||
POP EDI
|
POP EDI
|
||||||
POP ESI
|
POP ESI
|
||||||
POP EBX
|
POP EBX
|
||||||
@@ret:
|
@@ret:
|
||||||
end;
|
end;
|
||||||
|
{$ENDIF no_USE_MDI}
|
||||||
{$ENDIF no NEW_MODAL}
|
{$ENDIF no NEW_MODAL}
|
||||||
{$ENDIF no USE_GRAPHCTLS}
|
{$ENDIF no USE_GRAPHCTLS}
|
||||||
|
|
||||||
@ -6086,6 +6072,7 @@ asm // //
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TControl.Set_Visible( Value: Boolean );
|
procedure TControl.Set_Visible( Value: Boolean );
|
||||||
|
const wsVisible = $10;
|
||||||
asm
|
asm
|
||||||
{$IFDEF OLD_ALIGN}
|
{$IFDEF OLD_ALIGN}
|
||||||
PUSH EBX
|
PUSH EBX
|
||||||
@ -7108,23 +7095,6 @@ asm
|
|||||||
@@exit:
|
@@exit:
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TControl.CreateChildWindows;
|
|
||||||
asm
|
|
||||||
PUSH ESI
|
|
||||||
MOV ESI, [EAX].TControl.fChildren
|
|
||||||
MOV ECX, [ESI].TList.fCount
|
|
||||||
MOV ESI, [ESI].TList.fItems
|
|
||||||
JECXZ @@exit
|
|
||||||
|
|
||||||
@@loop: PUSH ECX
|
|
||||||
LODSD
|
|
||||||
CALL CallTControlCreateWindow
|
|
||||||
POP ECX
|
|
||||||
LOOP @@loop
|
|
||||||
|
|
||||||
@@exit: POP ESI
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TControl.ProcessMessage: Boolean;
|
function TControl.ProcessMessage: Boolean;
|
||||||
const size_TMsg = sizeof( TMsg );
|
const size_TMsg = sizeof( TMsg );
|
||||||
asm
|
asm
|
||||||
@ -13849,240 +13819,6 @@ asm //cmd //opd
|
|||||||
POP EBX
|
POP EBX
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFnDEF OLD_ALIGN}
|
|
||||||
procedure AlignChildrenProc(Sender: PObj);
|
|
||||||
const AlignModes = (1 shl byte(caBottom))+(1 shl byte(caTop))+
|
|
||||||
(((1 shl byte(caRight)) +(1 shl byte(caLeft)))shl 8)+
|
|
||||||
(((1 shl byte(caClient))+(1 shl byte(caNone)))shl 16);
|
|
||||||
asm //cmd //opd
|
|
||||||
TEST EAX,EAX
|
|
||||||
JZ @@21
|
|
||||||
CMP [EAX].TControl.fParent,0
|
|
||||||
SETZ DL
|
|
||||||
{$IFDEF USE_FLAGS}
|
|
||||||
TEST [EAX].TControl.fFlagsG3, (1 shl G3_IsForm)
|
|
||||||
SETNZ DH
|
|
||||||
OR DL, DH
|
|
||||||
{$ELSE}
|
|
||||||
OR DL,[EAX].TControl.fIsForm
|
|
||||||
{$ENDIF}
|
|
||||||
BTR dword ptr[EAX].TControl.fAligning,oaFromSelf
|
|
||||||
JA @@20
|
|
||||||
OR byte ptr[EAX].TControl.fAligning,(1 shl oaWaitAlign)
|
|
||||||
MOV EAX,[EAX].TControl.fParent
|
|
||||||
@@20: CALL @@ToBeAlign
|
|
||||||
JNZ @@DoAlign
|
|
||||||
@@21: RETN
|
|
||||||
|
|
||||||
@@ToBeAlign:
|
|
||||||
{$IFDEF USE_FLAGS}
|
|
||||||
TEST [EAX].TControl.fStyle.f3_Style, 1 shl F3_Visible
|
|
||||||
SETNZ DL
|
|
||||||
{$ELSE}
|
|
||||||
MOV DL,[EAX].TControl.fVisible
|
|
||||||
{$ENDIF}
|
|
||||||
{$IFDEF USE_FLAGS}
|
|
||||||
TEST [EAX].TControl.fFlagsG3, 1 shl G3_IsForm
|
|
||||||
SETNZ DH
|
|
||||||
OR DL, DH
|
|
||||||
TEST [EAX].TControl.fFlagsG4, (1 shl G4_CreateHidden)
|
|
||||||
SETNZ DH
|
|
||||||
OR DL, DH
|
|
||||||
{$ELSE}
|
|
||||||
OR DL,[EAX].TControl.fCreateHidden
|
|
||||||
{$ENDIF}
|
|
||||||
JE @@10
|
|
||||||
{$IFDEF USE_FLAGS}
|
|
||||||
TEST [EAX].TControl.fFlagsG3, 1 shl G3_IsForm
|
|
||||||
SETNZ DH
|
|
||||||
AND DL, DH
|
|
||||||
{$ELSE}
|
|
||||||
AND DL,[EAX].TControl.fIsForm
|
|
||||||
{$ENDIF}
|
|
||||||
JNE @@12
|
|
||||||
CMP dword ptr[EAX].TControl.fParent,0
|
|
||||||
JE @@11
|
|
||||||
PUSH EAX
|
|
||||||
MOV EAX,[EAX].TControl.fParent
|
|
||||||
CALL @@ToBeAlign
|
|
||||||
POP EAX
|
|
||||||
@@10: XOR DL,1
|
|
||||||
//!!! Important: oaWaitAlign=0
|
|
||||||
OR [EAX].TControl.fAligning,DL
|
|
||||||
@@11: XOR DL,1
|
|
||||||
@@12: RETN
|
|
||||||
|
|
||||||
@@DoAlign:
|
|
||||||
//CALL AlignChildrenProc_
|
|
||||||
//RET
|
|
||||||
PUSH EBP
|
|
||||||
PUSH EBX
|
|
||||||
PUSH ESI
|
|
||||||
PUSH EDI
|
|
||||||
PUSH AlignModes //00210A14h
|
|
||||||
SUB ESP,030h
|
|
||||||
MOV EBX,EAX
|
|
||||||
AND byte ptr[EBX].TControl.fAligning,not(1 shl oaWaitAlign)
|
|
||||||
OR byte ptr[EBX].TControl.fAligning,(1 shl oaAligning)
|
|
||||||
LEA EDX,[ESP+20h] //@CR
|
|
||||||
CALL TControl.ClientRect
|
|
||||||
@@Main:
|
|
||||||
MOV EAX,[EBX].TControl.fChildren
|
|
||||||
MOV EDI,[EAX].TList.fCount
|
|
||||||
MOV EBP,[EAX].TList.fItems
|
|
||||||
JMP @@entry
|
|
||||||
@@loop:
|
|
||||||
MOV ESI,[EBP]
|
|
||||||
{$IFDEF USE_FLAGS}
|
|
||||||
MOV AL,[ESI].TControl.fStyle.f3_Style
|
|
||||||
SHR AL, F3_Visible
|
|
||||||
OR AL,[ESI].TControl.fFlagsG4
|
|
||||||
AND AL, 1 shl G4_CreateHidden // G4_CreateHidden = 0 !!!
|
|
||||||
{$ELSE}
|
|
||||||
MOV AL,[ESI].TControl.fVisible
|
|
||||||
OR AL,[ESI].TControl.fCreateHidden
|
|
||||||
{$ENDIF}
|
|
||||||
JZ @@continue
|
|
||||||
MOVZX EAX,[ESI].TControl.fAlign
|
|
||||||
BT [ESP+30h],EAX //Allowed
|
|
||||||
JNC @@continue
|
|
||||||
{$IFDEF USE_FLAGS}
|
|
||||||
TEST [ESI].TControl.fFlagsG4, 1 shl G4_NotUseAlign
|
|
||||||
{$ELSE}
|
|
||||||
CMP byte ptr[ESI].TControl.fNotUseAlign,0
|
|
||||||
{$ENDIF}
|
|
||||||
JNE @@align
|
|
||||||
MOV EDX,ESP //@R
|
|
||||||
MOV EAX,ESI //C
|
|
||||||
CALL TControl.GetBoundsRect
|
|
||||||
MOV EAX,[ESP+0Ch] //R.Bottom
|
|
||||||
MOV [ESP+1Ch],EAX //H
|
|
||||||
MOV EAX,[ESP+08h] //R.Right
|
|
||||||
MOV [ESP+18h],EAX //W
|
|
||||||
MOV EAX,[ESP+04h] //R.Top
|
|
||||||
MOV [ESP+14h],EAX //R1.Top
|
|
||||||
SUB [ESP+1Ch],EAX //H
|
|
||||||
MOV EAX,[ESP] //R.Left
|
|
||||||
MOV [ESP+10h],EAX //R1.Left
|
|
||||||
SUB [ESP+18h],EAX //W
|
|
||||||
MOVSX EDX,[EBX].TControl.fMargin
|
|
||||||
MOVZX ECX,byte ptr[ESI].TControl.fAlign
|
|
||||||
//!!! Order of caXXX-constants is important
|
|
||||||
LOOP @@caTop
|
|
||||||
MOV EAX,[ESP+20h] //CR.Left
|
|
||||||
SUB EAX,[ESP] //R.Left
|
|
||||||
ADD EAX,EDX //+Margin
|
|
||||||
MOV ECX,[ESP+18h] //W
|
|
||||||
ADD ECX,EDX //+Margin
|
|
||||||
ADD [ESP+20h],ECX //CR.Left
|
|
||||||
JMP @@00
|
|
||||||
@@caTop:
|
|
||||||
LOOP @@caRight
|
|
||||||
MOV EAX,[ESP+24h] //CR.Top
|
|
||||||
SUB EAX,[ESP+04h] //R.Top
|
|
||||||
ADD EAX,EDX //+Margin
|
|
||||||
MOV ECX,[ESP+1Ch] //H
|
|
||||||
ADD ECX,EDX //+Margin
|
|
||||||
ADD [ESP+24h],ECX //CR.Top
|
|
||||||
JMP @@01
|
|
||||||
@@caRight:
|
|
||||||
LOOP @@caBottom
|
|
||||||
MOV EAX,[ESP+28h] //CR.Right
|
|
||||||
SUB EAX,[ESP+08h] //R.Right
|
|
||||||
SUB EAX,EDX //-Margin
|
|
||||||
MOV ECX,[ESP+18h] //W
|
|
||||||
ADD ECX,EDX //+Margin
|
|
||||||
SUB [ESP+28h],ECX //CR.Right
|
|
||||||
@@00: ADD [ESP],EAX //R.Left
|
|
||||||
ADD [ESP+08h],EAX //R.Right
|
|
||||||
MOV EAX,[ESP+2Ch] //CR.Bottom
|
|
||||||
SUB EAX,EDX //+Margin
|
|
||||||
MOV [ESP+0Ch],EAX //R.Bottom
|
|
||||||
ADD EDX,[esp+24h] //Margin+CR.Top
|
|
||||||
MOV [ESP+04h],edx //R.Top
|
|
||||||
JMP @@caNone
|
|
||||||
@@caBottom:
|
|
||||||
LOOP @@caClient
|
|
||||||
MOV EAX,[ESP+2Ch] //CR.Bottom
|
|
||||||
SUB EAX,[ESP+0Ch] //R.Bottom
|
|
||||||
SUB EAX,EDX //-Margin
|
|
||||||
MOV ECX,[ESP+1Ch] //H
|
|
||||||
ADD ECX,EDX //+Margin
|
|
||||||
SUB [ESP+2Ch],ECX //CR.Bottom
|
|
||||||
@@01: ADD [ESP+04h],EAX //R.Top
|
|
||||||
ADD [ESP+0Ch],EAX //R.Bottom
|
|
||||||
MOV EAX,[ESP+28h] //CR.Right
|
|
||||||
SUB EAX,EDX //-Margin
|
|
||||||
MOV [esp+08h],EAX //R.Right
|
|
||||||
ADD EDX,[ESP+20h] //Margin+CR.Left
|
|
||||||
MOV [ESP],EDX //R.Left
|
|
||||||
JMP @@caNone
|
|
||||||
@@caClient:
|
|
||||||
LOOP @@caNone
|
|
||||||
MOV EAX,[ESP+2Ch] //CR.Bottom
|
|
||||||
SUB EAX,EDX //-Margin
|
|
||||||
MOV [ESP+0Ch],EAX //R.Bottom
|
|
||||||
MOV EAX,[ESP+28h] //CR.Right
|
|
||||||
SUB EAX,EDX //-Margin
|
|
||||||
MOV [ESP+08h],EAX //R.Right
|
|
||||||
MOV EAX,[ESP+24h] //CR.Top
|
|
||||||
ADD EAX,EDX //+Margin
|
|
||||||
MOV [ESP+04h],EAX //R.Top
|
|
||||||
ADD EDX,[ESP+20h] //Margin+CR.Left
|
|
||||||
MOV [ESP],EDX //R.Left
|
|
||||||
@@caNone:
|
|
||||||
MOV EAX,[ESP] //R.Left
|
|
||||||
CMP EAX,[ESP+08h] //R.Right
|
|
||||||
JLE @@02 //CMOVG ???
|
|
||||||
MOV [ESP+08h],EAX //R.Right
|
|
||||||
@@02: MOV EAX,[ESP+04h] //R.Top
|
|
||||||
CMP EAX,[ESP+0Ch] //R.Bottom
|
|
||||||
JLE @@03 //CMOVG ???
|
|
||||||
MOV [ESP+0Ch],EAX //R.Bottom
|
|
||||||
@@03: MOV EDX,[ESP] //R.Left
|
|
||||||
SUB EDX,[ESP+10h] //R1.Left
|
|
||||||
MOV EAX,[ESP+04h] //R.Top
|
|
||||||
SUB EAX,[ESP+14h] //R1.Top
|
|
||||||
OR EDX,EAX //ChgPos
|
|
||||||
MOV ECX,[ESP+08h] //R.Right
|
|
||||||
SUB ECX,[ESP] //R.Left
|
|
||||||
SUB ECX,[ESP+18h] //W
|
|
||||||
MOV EAX,[ESP+0Ch] //R.Bottom
|
|
||||||
SUB EAX,[ESP+04h] //R.Top
|
|
||||||
SUB EAX,[ESP+1Ch] //H
|
|
||||||
OR EAX,ECX
|
|
||||||
JZ @@04
|
|
||||||
AND byte ptr[ESI].TControl.fAligning,not(1 shl oaWaitAlign)
|
|
||||||
OR byte ptr[ESI].TControl.fAligning,(1 shl oaFromSelf)
|
|
||||||
@@04: OR EAX,EDX
|
|
||||||
JZ @@align
|
|
||||||
MOV EDX,ESP //@R
|
|
||||||
MOV EAX,ESI //C
|
|
||||||
CALL TControl.SetBoundsRect
|
|
||||||
@@align:
|
|
||||||
TEST byte ptr[ESI].TControl.fAligning,(1 shl oaWaitAlign)
|
|
||||||
JZ @@continue
|
|
||||||
MOV EAX,ESI //C
|
|
||||||
CALL @@DoAlign
|
|
||||||
@@continue:
|
|
||||||
TEST byte ptr[EBX].TControl.fAligning,(1 shl oaAligning)
|
|
||||||
JZ @@exit
|
|
||||||
ADD EBP,4
|
|
||||||
@@entry:
|
|
||||||
DEC EDI
|
|
||||||
JGE @@loop
|
|
||||||
SHR dword ptr[ESP+30h],8 //Allowed
|
|
||||||
JNZ @@Main
|
|
||||||
AND byte ptr[EBX].TControl.fAligning,not(1 shl oaAligning)
|
|
||||||
@@exit:
|
|
||||||
ADD ESP,34h
|
|
||||||
POP EDI
|
|
||||||
POP ESI
|
|
||||||
POP EBX
|
|
||||||
POP EBP
|
|
||||||
end;
|
|
||||||
{$ENDIF OLD_ALIGN}
|
|
||||||
|
|
||||||
function WndProcUpdate( Sender: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
function WndProcUpdate( Sender: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||||
asm //cmd //opd
|
asm //cmd //opd
|
||||||
PUSH EBX
|
PUSH EBX
|
||||||
@ -14181,7 +13917,7 @@ asm
|
|||||||
JECXZ @@retDL
|
JECXZ @@retDL
|
||||||
|
|
||||||
{$IFDEF OLD_ALIGN}
|
{$IFDEF OLD_ALIGN}
|
||||||
CMP [EAX].TControl.fVisibleWoParent
|
CMP [EAX].TControl.fVisibleWoParent, 0
|
||||||
JZ @@1
|
JZ @@1
|
||||||
MOV DL, DH
|
MOV DL, DH
|
||||||
JMP @@retDL
|
JMP @@retDL
|
||||||
|
Reference in New Issue
Block a user