Merge with unofficial 3.22 version compatible with fpc 2.6.4 and 2.7.1 i386 and x64 compilers by "Dmitri K dmiko@mail333.com (dmiko)" principal work
and "Thaddy de Koning thaddy@thaddy.com" (merge 3.22) KOL: * a LOT of declarations\fixes for x64\FPC support (by dmiko and Thaddy) + TList.SortEx - for custom sorting Items + TStrList.IndexOfName_NoCaseFast, TStrList.IndexOfName_Fast, TStrList.Values_NocaseFast[], TStrList.Values_Fast[] - faster than TStrList.IndexOfName\Values\etc.. + TStrList.Remove\RemoveByName - Removes first entry of a Value\LineName in the list + TStrList.IsEmpty - check list empty + TStrList.Add2\Insert2\Delete2\Items2[Idx, Col]\Swap2\IndexOf2\Count2\ColsCount - work with TStrList like with table[Idx, Col] + TStrListEx.SortEx - for custom sorting Items with Objects * SVN_BUG#1: TStrListEx.SortEx - breaks objects association fixed (thanks to tacituseu) * SVN_BUG#2: TControl.FreeCharFormatRec - fixed STATIC_RICHEDIT_DATA define (by tacituseu) * TControl.LVColInsert - return inserted col index + TControl.LVGetHeader - Gets the handle to the header control used by the list-view control + TControl.LVSubItemAtPos - Return index of subitem at the given position + TControl.LVIndexOfEx - Returns first list view item index with subitem ACol matching S + TControl.TVItemInsert - extended version of TVInsert: can set images and set ItemData * NewReadWriteFileStream - smaller code by use winapi flag ofOpenAlways instead FileExists function * TMenu.Destroy\RemoveSubMenu - fixed memory leak on destroy (by dotnet20) * CallDefFrameProc - fixed crash when use MDI - ASM: TStrList.AddStrings\LoadFromStream\MergeFromFile\SaveToFile - switched off because maybe can get crash (need tests) * PAS: TStrList.LoadFromStream\SaveToFile - fixed * TStrList.IndexOfName - small speedup * TStrList.IndexOfName_NoCase - this code "while (p^ <> #0) and (p^ <= ' ') do inc( p );" is deleted, because sometimes get deadlock (wtf code doing!?) * ASM: WndProcTreeView - fixed TV_DRAG_RBUTTON define + TFastStrListEx.NameDelimiter - like in TStrList + TFastStrListEx.SetValue - like in TStrList MCK: * updated to MCK v3.23 (with some fixes) * MCKAppExpert200x wizard - fixed unit name * TKOLListView.SetupLast - fixed crash + TKOLListView.OnLVCustomDraw - added event assign + TKOLMemo.Paint\WYSIWIGPaintImplemented - add visual style for memo in designer mode + !!!ALPHA VERSION!!!: ux visual style mode for some controls in designer mode (PaintType: ptWYSIWIG) (WinXP minimum req.) err.pas: * moved from addons to kolmck folder * fixed exception.message in IDE * source code formating common: * cleaning... * updated readmes * dpk packages replaced and renamed (KOLMCKXXXX.dpk) maybe forgot something... KOLAddons package will be updated later.. git-svn-id: https://svn.code.sf.net/p/kolmck/code@138 91bb2d04-0c0c-4d2d-88a5-bbb6f4c1fa07
This commit is contained in:
345
KOL_ASM.inc
345
KOL_ASM.inc
@@ -1,6 +1,6 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// KOL_ASM.inc (to inlude in KOL.pas)
|
||||
// v 3.17
|
||||
// v 3.210
|
||||
|
||||
function MsgBox( const S: KOLString; Flags: DWORD ): DWORD;
|
||||
asm
|
||||
@@ -982,7 +982,7 @@ asm
|
||||
CALL TObj.Destroy
|
||||
end;
|
||||
|
||||
function TGraphicTool.ReleaseHandle: Integer;
|
||||
function TGraphicTool.ReleaseHandle: THandle;
|
||||
asm // //
|
||||
PUSH EAX
|
||||
CALL Changed
|
||||
@@ -2800,6 +2800,7 @@ asm
|
||||
POP EBP
|
||||
end;
|
||||
|
||||
{$IFDEF fixed_asm}
|
||||
function File2Str( Handle: THandle): AnsiString;
|
||||
asm
|
||||
PUSH EDX
|
||||
@@ -2864,6 +2865,7 @@ asm
|
||||
CALL System.@FreeMem
|
||||
@@fin:
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function FileWrite( Handle: THandle; const Buffer; Count: DWord): DWord;
|
||||
asm
|
||||
@@ -3007,7 +3009,11 @@ asm
|
||||
CALL Clear
|
||||
LEA EAX, [EBX].FPath
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrClr
|
||||
{$IFDEF USTR_}
|
||||
CALL System.@UStrClr
|
||||
{$ELSE}
|
||||
CALL System.@WStrClr
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@LStrClr
|
||||
{$ENDIF}
|
||||
@@ -3125,15 +3131,23 @@ asm //cmd //opd
|
||||
PUSH EDX
|
||||
LEA EAX, [EAX].fSection
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrClr
|
||||
{$IFDEF USTR_}
|
||||
CALL System.@UStrClr
|
||||
{$ELSE}
|
||||
CALL System.@WStrClr
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@LStrClr
|
||||
CALL System.@LStrClr
|
||||
{$ENDIF}
|
||||
POP EAX
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrClr
|
||||
{$IFDEF USTR_}
|
||||
CALL System.@UStrClr
|
||||
{$ELSE}
|
||||
CALL System.@WStrClr
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@LStrClr
|
||||
CALL System.@LStrClr
|
||||
{$ENDIF}
|
||||
POP EAX
|
||||
CALL TObj.Destroy
|
||||
@@ -3463,7 +3477,7 @@ asm
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
function WndProc_DrawItem( Sender: PControl; var Msg: TMsg; var Rslt: Integer )
|
||||
function WndProc_DrawItem( Sender: PControl; var Msg: TMsg; var Rslt: LResult )
|
||||
: Boolean;
|
||||
asm //cmd //opd
|
||||
CMP word ptr [EDX].TMsg.message, WM_DRAWITEM
|
||||
@@ -3847,7 +3861,7 @@ asm
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
function WndProcDoEraseBkgnd( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcDoEraseBkgnd( Self_: PControl; var Msg: TMsg; var Rslt: LResult ): Boolean;
|
||||
asm // //
|
||||
CMP word ptr [EDX].TMsg.message, WM_ERASEBKGND
|
||||
JNE @@ret_false
|
||||
@@ -3903,7 +3917,7 @@ asm // //
|
||||
XOR EAX, EAX
|
||||
end;
|
||||
|
||||
function WndProcSplitter( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcSplitter( Self_: PControl; var Msg: TMsg; var Rslt: LResult ): Boolean;
|
||||
asm
|
||||
CMP word ptr [EDX].TMsg.message, WM_NCHITTEST
|
||||
JNE @@noWM_NCHITTEST
|
||||
@@ -4399,9 +4413,14 @@ asm
|
||||
AND DL, $FE
|
||||
@@3: MOV [EBX].TControl.fLookTabKeys, DL
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
TEST EAX, 1 shl eoReadonly //dmiko
|
||||
JNZ @@4 //
|
||||
TEST EAX, 1 shl eoNumber //
|
||||
JNZ @@4 //
|
||||
MOV EAX, EBX
|
||||
MOV EDX, offset[WndProcUnicodeChars]
|
||||
CALL TControl.AttachProc
|
||||
@@4:
|
||||
{$ENDIF}
|
||||
XCHG EAX, EBX
|
||||
POP EBX
|
||||
@@ -4524,7 +4543,7 @@ asm
|
||||
POP EAX
|
||||
end;
|
||||
|
||||
function WndProcParentResize( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcParentResize( Self_: PControl; var Msg: TMsg; var Rslt: LResult ): Boolean;
|
||||
asm
|
||||
CMP word ptr [EDX].TMsg.message, CM_SIZE
|
||||
JNZ @@exit
|
||||
@@ -4604,7 +4623,7 @@ asm
|
||||
end;
|
||||
|
||||
// by Galkov, Jun-2009
|
||||
function WndProcNotify( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcNotify( Self_: PControl; var Msg: TMsg; var Rslt: LRESULT ): Boolean;
|
||||
asm
|
||||
CMP word ptr [EDX].TMsg.message, WM_NOTIFY
|
||||
JNE @@ret_false
|
||||
@@ -4637,7 +4656,7 @@ asm
|
||||
XOR EAX, EAX
|
||||
end;
|
||||
|
||||
function WndProcCommonNotify( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcCommonNotify( Self_: PControl; var Msg: TMsg; var Rslt: LRESULT ): Boolean;
|
||||
asm
|
||||
CMP word ptr [EDX].TMsg.message, WM_NOTIFY
|
||||
JNE @@ret_false
|
||||
@@ -4935,7 +4954,7 @@ asm //cmd //opd
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
function WndProcTabControl( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcTabControl( Self_: PControl; var Msg: TMsg; var Rslt: LRESULT ): Boolean;
|
||||
asm //cmd //opd
|
||||
{$IFDEF OLD_ALIGN}
|
||||
PUSH EBP
|
||||
@@ -5662,9 +5681,13 @@ asm
|
||||
|
||||
LEA EAX, [EBX].fCaption
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrClr
|
||||
{$IFDEF USTR_}
|
||||
CALL System.@UStrClr
|
||||
{$ELSE}
|
||||
CALL System.@WStrClr
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@LStrClr
|
||||
CALL System.@LStrClr
|
||||
{$ENDIF}
|
||||
XCHG EAX, EBX
|
||||
CALL TObj.Destroy
|
||||
@@ -5728,7 +5751,7 @@ asm
|
||||
JNZ TControl.GetWindowHandle
|
||||
end;}
|
||||
|
||||
function WndProcMouse(Self_: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;
|
||||
function WndProcMouse(Self_: PControl; var Msg: TMsg; var Rslt: LRESULT): Boolean;
|
||||
asm
|
||||
PUSH EBX
|
||||
PUSH ESI
|
||||
@@ -5823,7 +5846,7 @@ end;
|
||||
{$IFnDEF USE_GRAPHCTLS}
|
||||
{$IFnDEF NEW_MODAL}
|
||||
{$IFnDEF USE_MDI}
|
||||
function TControl.WndProc( var Msg: TMsg ): Integer;
|
||||
function TControl.WndProc( var Msg: TMsg ): LRESULT;
|
||||
asm //cmd //opd
|
||||
PUSH EBX
|
||||
PUSH ESI
|
||||
@@ -6402,9 +6425,13 @@ asm
|
||||
XCHG EBX, EAX
|
||||
LEA EAX, [EBX].fCaption
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrAsg
|
||||
{$IFDEF UStr_}
|
||||
CALL System.@UStrAsg
|
||||
{$ELSE}
|
||||
CALL System.@WStrAsg
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@LStrAsg
|
||||
CALL System.@LStrAsg
|
||||
{$ENDIF}
|
||||
|
||||
MOV ECX, [EBX].fHandle
|
||||
@@ -6997,7 +7024,7 @@ asm
|
||||
{$I CustomAppIconRsrcName_ASM.inc} // create such file with DB 'your icon rsrc name' / DD youriconnumber
|
||||
{$ELSE}
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
DB 'M',0,'A',0,'I',0,'N',0,'I',0,'C',0,'O',0,'N',0,0
|
||||
DB 'M',0,'A',0,'I',0,'N',0,'I',0,'C',0,'O',0,'N',0,0,0 //dmiko
|
||||
{$ELSE}
|
||||
DB 'MAINICON'
|
||||
{$ENDIF}
|
||||
@@ -7018,7 +7045,7 @@ asm
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
function TControl.CallDefWndProc(var Msg: TMsg): Integer;
|
||||
function TControl.CallDefWndProc(var Msg: TMsg): LRESULT;
|
||||
asm
|
||||
PUSH [EDX].TMsg.lParam
|
||||
PUSH [EDX].TMsg.wParam
|
||||
@@ -7586,7 +7613,7 @@ asm
|
||||
JZ @@loo
|
||||
end;
|
||||
|
||||
function WndProcForm(Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcForm(Self_: PControl; var Msg: TMsg; var Rslt: LRESULT ): Boolean;
|
||||
const szPaintStruct = sizeof(TPaintStruct);
|
||||
asm //cmd //opd
|
||||
{$IFDEF ENDSESSION_HALT}
|
||||
@@ -7818,7 +7845,7 @@ asm
|
||||
POP EAX
|
||||
end;
|
||||
|
||||
function WndProcCtrl( Self_: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;
|
||||
function WndProcCtrl( Self_: PControl; var Msg: TMsg; var Rslt: LRESULT): Boolean;
|
||||
asm //cmd //opd
|
||||
PUSH EBX
|
||||
XCHG EBX, EAX
|
||||
@@ -9652,9 +9679,13 @@ asm
|
||||
CALL TObj.RefDec
|
||||
@@fin: LEA EAX, [EBX].FTooltip
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrClr
|
||||
{$IFDEF USTR_}
|
||||
CALL System.@UStrClr
|
||||
{$ELSE}
|
||||
CALL System.@WStrClr
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@LStrClr
|
||||
CALL System.@LStrClr
|
||||
{$ENDIF}
|
||||
XCHG EAX, EBX
|
||||
CALL TObj.Destroy
|
||||
@@ -9668,26 +9699,39 @@ asm
|
||||
JE @@exit
|
||||
MOV ECX, [EAX].fIcon
|
||||
JECXZ @@exit
|
||||
|
||||
CMP [EAX].FWnd, 0
|
||||
JNZ @@ok_setvalue
|
||||
|
||||
MOV ECX, [EAX].FControl
|
||||
JECXZ @@exit
|
||||
|
||||
PUSH EDX
|
||||
PUSH EAX
|
||||
MOV ECX, [EAX].FWnd
|
||||
INC ECX
|
||||
LOOP @@1
|
||||
MOV ECX, [EAX].fControl
|
||||
XOR EAX, EAX
|
||||
JECXZ @@1
|
||||
XCHG EAX, ECX
|
||||
CALL TControl.GetWindowHandle
|
||||
@@1:
|
||||
POP ECX
|
||||
TEST EAX, EAX
|
||||
POP EAX
|
||||
POP EDX
|
||||
XCHG EAX, ECX
|
||||
JECXZ @@exit
|
||||
MOV [EAX].fActive, DL
|
||||
JZ @@exit
|
||||
|
||||
@@ok_setvalue:
|
||||
MOVZX EDX, DL
|
||||
XOR DL, 1
|
||||
ADD EDX, EDX
|
||||
CALL SetTrayIcon
|
||||
SHL DL, 1
|
||||
PUSHFD
|
||||
PUSH EAX
|
||||
CALL SetTrayIcon
|
||||
POP EDX
|
||||
POPFD
|
||||
JZ @@rslt_FActive
|
||||
|
||||
AND AL, 1
|
||||
XOR AL, 1
|
||||
AND AL, byte ptr [EDX].FActive
|
||||
|
||||
@@rslt_FActive:
|
||||
MOV byte ptr [EDX].FActive, AL
|
||||
@@exit:
|
||||
end;
|
||||
|
||||
@@ -9707,7 +9751,7 @@ asm
|
||||
@@exit:
|
||||
end;
|
||||
|
||||
function WndProcJustOne( Control: PControl; var Msg: TMsg; var Rslt: Integer ) : Boolean;
|
||||
function WndProcJustOne( Control: PControl; var Msg: TMsg; var Rslt: LRESULT ) : Boolean;
|
||||
asm
|
||||
MOV ECX, [EDX].TMsg.message
|
||||
SUB ECX, WM_CLOSE
|
||||
@@ -9746,20 +9790,21 @@ asm
|
||||
POP EAX
|
||||
end;
|
||||
|
||||
procedure TStrList.AddStrings(Strings: PStrList);
|
||||
asm
|
||||
PUSH EAX
|
||||
XCHG EAX, EDX
|
||||
PUSH 0
|
||||
MOV EDX, ESP
|
||||
CALL GetTextStr
|
||||
POP EDX
|
||||
POP EAX
|
||||
MOV CL, 1
|
||||
PUSH EDX
|
||||
CALL SetText
|
||||
CALL RemoveStr
|
||||
end;
|
||||
//dufa
|
||||
//procedure TStrList.AddStrings(Strings: PStrList);
|
||||
//asm
|
||||
// PUSH EAX
|
||||
// XCHG EAX, EDX
|
||||
// PUSH 0
|
||||
// MOV EDX, ESP
|
||||
// CALL GetTextStr
|
||||
// POP EDX
|
||||
// POP EAX
|
||||
// MOV CL, 1
|
||||
// PUSH EDX
|
||||
// CALL SetText
|
||||
// CALL RemoveStr
|
||||
//end;
|
||||
|
||||
procedure TStrList.Assign(Strings: PStrList);
|
||||
asm
|
||||
@@ -9941,6 +9986,7 @@ asm
|
||||
@@exit:
|
||||
end;
|
||||
|
||||
{// bugged.dufa
|
||||
procedure TStrList.MergeFromFile(const FileName: KOLString);
|
||||
asm
|
||||
PUSH EAX
|
||||
@@ -9953,7 +9999,7 @@ asm
|
||||
CALL LoadFromStream
|
||||
POP EAX
|
||||
JMP TObj.RefDec
|
||||
end;
|
||||
end;}
|
||||
|
||||
procedure TStrList.SaveToStream(Stream: PStream);
|
||||
asm
|
||||
@@ -10739,7 +10785,7 @@ asm
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
function TControl.Perform(msgcode: DWORD; wParam, lParam: Integer): Integer; stdcall;
|
||||
function TControl.Perform(msgcode: DWORD; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
|
||||
asm
|
||||
PUSH [lParam]
|
||||
PUSH [wParam]
|
||||
@@ -10754,7 +10800,7 @@ asm
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
function TControl.Postmsg(msgcode: DWORD; wParam, lParam: Integer): Boolean; stdcall;
|
||||
function TControl.Postmsg(msgcode: DWORD; wParam: WPARAM; lParam: LPARAM): Boolean; stdcall;
|
||||
asm
|
||||
PUSH [lParam]
|
||||
PUSH [wParam]
|
||||
@@ -10810,9 +10856,13 @@ asm //cmd //opd
|
||||
LEA EAX, [EAX].FTitle
|
||||
@@loo:
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrClr
|
||||
{$IFDEF USTR_}
|
||||
CALL System.@UStrClr
|
||||
{$ELSE}
|
||||
CALL System.@WStrClr
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@LStrClr
|
||||
CALL System.@LStrClr
|
||||
{$ENDIF}
|
||||
POP EAX
|
||||
TEST EAX, EAX
|
||||
@@ -10832,9 +10882,13 @@ asm //cmd //opd
|
||||
LEA EAX, [EAX].FStatusText
|
||||
@@loo:
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrClr
|
||||
{$IFDEF USTR_}
|
||||
CALL System.@UStrClr
|
||||
{$ELSE}
|
||||
CALL System.@WStrClr
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@LStrClr
|
||||
CALL System.@LStrClr
|
||||
{$ENDIF}
|
||||
POP EAX
|
||||
TEST EAX, EAX
|
||||
@@ -11026,11 +11080,15 @@ asm
|
||||
MOV EDX, EAX
|
||||
MOV EAX, ESP
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
CALL System.@WStrFromPWChar
|
||||
{$IFDEF UStr_}
|
||||
CALL System.@UStrFromPWChar
|
||||
{$ELSE}
|
||||
{$IFDEF _D2009orHigher}
|
||||
XOR ECX, ECX // TODO: safe?
|
||||
CALL System.@WStrFromPWChar
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
{$IFDEF _D2009orHigher}
|
||||
XOR ECX, ECX // TODO: safe?
|
||||
{$ENDIF}
|
||||
CALL System.@LStrFromPChar
|
||||
{$ENDIF}
|
||||
|
||||
@@ -11235,7 +11293,7 @@ asm
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function TimerProc( Wnd : HWnd; Msg : Integer; T : PTimer; CurrentTime : DWord ): Integer;
|
||||
procedure TimerProc( Wnd : HWnd; Msg : DWORD; T : PTimer; CurrentTime : DWord );
|
||||
stdcall;
|
||||
asm //cmd //opd
|
||||
{$IFDEF STOPTIMER_AFTER_APPLETTERMINATED}
|
||||
@@ -12025,6 +12083,157 @@ asm
|
||||
CALL TObj.RefDec
|
||||
end;
|
||||
|
||||
function MoveTetrades(Mem, From:PByte; Size: Integer;incFrom,
|
||||
xx: Integer): Integer;
|
||||
asm
|
||||
PUSH EBX
|
||||
MOV EBX, ECX
|
||||
INC EBX
|
||||
SHR EBX, 1
|
||||
TEST BL, 1
|
||||
JZ @@0
|
||||
INC EBX
|
||||
@@0:
|
||||
PUSH EBX // Result := (Size+1)shr 1; if (Result and 1) <> 0 then inc(Result);
|
||||
XOR EBX, EBX // BH = ff = 0
|
||||
@@1:
|
||||
MOV BL, [EDX]
|
||||
TEST BH, 1
|
||||
JZ @@2
|
||||
ADD EDX, [incFrom] //[EBP+12] // inc(From, incFrom)
|
||||
AND BL, $0F
|
||||
JMP @@3
|
||||
@@2: SHR BL, 4
|
||||
@@3:
|
||||
TEST BYTE PTR [xx], 1 //[EBP+8], 1
|
||||
JZ @@4
|
||||
{$IFNDEF SMALLER_CODE}
|
||||
AND byte ptr [EAX], $F0
|
||||
{$ENDIF}
|
||||
OR byte ptr [EAX], BL
|
||||
INC EAX
|
||||
JMP @@5
|
||||
@@4: SHL BL, 4
|
||||
MOV byte ptr [EAX], BL
|
||||
@@5:
|
||||
INC dword ptr [xx] //[EBP+8]
|
||||
INC BH
|
||||
LOOP @@1
|
||||
|
||||
POP EAX
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
function MoveRLEdata(Mem, From:PByte;Size: Integer;incFrom,
|
||||
xx: Integer): Integer;
|
||||
asm
|
||||
PUSH EBX
|
||||
MOV EBX, ECX
|
||||
INC EBX
|
||||
AND BL, $FE
|
||||
PUSH EBX
|
||||
@@1:
|
||||
MOV BL, byte ptr [EDX]
|
||||
MOV byte ptr [EAX], BL
|
||||
INC EAX
|
||||
ADD EDX, [incFrom]
|
||||
LOOP @@1
|
||||
|
||||
POP EAX
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
procedure DecodeRLE(Bmp:PBitmap;Data:Pointer; MaxSize: DWORD;
|
||||
MoveDataFun: TMoveData; shr_x: Integer);
|
||||
asm
|
||||
PUSHAD
|
||||
MOV ESI, EAX
|
||||
XCHG EDI, EDX
|
||||
PUSH EDI // [ESP+12] = Data
|
||||
PUSH ECX // [ESP+8] = MaxSize
|
||||
CALL TBitmap.GetScanLineSize
|
||||
PUSH 0 // [ESP+4] = X
|
||||
PUSH 0 // [ESP+0] = Y
|
||||
DEC EDI
|
||||
@@1:
|
||||
INC EDI
|
||||
MOV EAX, [ESI].TBitmap.FHeight
|
||||
CMP dword ptr [ESP], EAX
|
||||
JGE @@end_while
|
||||
MOV EAX, EDI
|
||||
SUB EAX, dword ptr [ESP+12]
|
||||
CMP EAX, dword ptr [ESP+8]
|
||||
JGE @@end_while
|
||||
|
||||
MOV BL, byte ptr [EDI]
|
||||
TEST BL, BL
|
||||
JNZ @@nozero
|
||||
INC EDI
|
||||
MOV BL, byte ptr [EDI]
|
||||
MOVZX ECX, BL
|
||||
INC ECX
|
||||
LOOP @@z1
|
||||
INC dword ptr [ESP] // inc(Y);
|
||||
MOV dword ptr [ESP+4], ECX // X := 0;
|
||||
JMP @@1
|
||||
@@z1:
|
||||
LOOP @@z2
|
||||
JMP @@end_while
|
||||
@@z2:
|
||||
LOOP @@z3
|
||||
INC EDI
|
||||
MOVZX EAX, byte ptr [EDI]
|
||||
ADD dword ptr [ESP+4], EAX
|
||||
INC EDI
|
||||
MOVZX EAX, byte ptr [EDI]
|
||||
ADD dword ptr [ESP], EAX
|
||||
JMP @@1
|
||||
@@z3:
|
||||
MOV BH, 1
|
||||
CALL @@call_move_data
|
||||
ADD EDI, EAX
|
||||
DEC EDI
|
||||
JMP @@1
|
||||
@@nozero:
|
||||
MOV BH, 0
|
||||
CALL @@call_move_data
|
||||
JMP @@1
|
||||
|
||||
@@call_move_data:
|
||||
INC EDI
|
||||
XOR EAX, EAX
|
||||
MOVZX EDX, BL // Z
|
||||
MOV ECX, dword ptr [ESP+4+4] //X
|
||||
ADD EDX, ECX
|
||||
CMP EDX, [ESI].TBitmap.FWidth
|
||||
JG @@no_move
|
||||
MOVZX EAX, BH
|
||||
PUSH EAX //... , 1 or 0, x)
|
||||
PUSH ECX //... , x)
|
||||
MOV EAX, dword ptr [ESI].TBitmap.fScanLineSize
|
||||
MOV EDX, dword ptr [ESP+0+4+8] // Y
|
||||
MUL EDX
|
||||
ADD EAX, dword ptr [ESI].TBitmap.fDIBBits
|
||||
MOV EDX, dword ptr [ESP+4+4+8] // X
|
||||
MOV CL, byte ptr[shr_x]
|
||||
SHR EDX, CL
|
||||
ADD EAX, EDX
|
||||
MOV EDX, EDI
|
||||
MOVZX ECX, BL
|
||||
CALL dword ptr [MoveDataFun]
|
||||
MOVZX ECX, BL
|
||||
ADD dword ptr [ESP+4+4], ECX // inc(x, z)
|
||||
@@no_move:
|
||||
RET
|
||||
|
||||
@@end_while:
|
||||
POP EDX
|
||||
POP EDX
|
||||
POP ECX
|
||||
POP EDI
|
||||
POPAD
|
||||
end;
|
||||
|
||||
function TBitmap.ReleaseHandle: HBitmap;
|
||||
asm
|
||||
PUSH EBX
|
||||
@@ -14321,7 +14530,7 @@ asm //cmd //opd
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
function WndProcUpdate( Sender: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcUpdate( Sender: PControl; var Msg: TMsg; var Rslt: LRESULT ): Boolean;
|
||||
asm //cmd //opd
|
||||
PUSH EBX
|
||||
XCHG EBX, EAX
|
||||
@@ -14582,7 +14791,7 @@ asm
|
||||
end;
|
||||
{$ENDIF nASM_VERSION}
|
||||
|
||||
function WndProcMouseEnterLeave( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcMouseEnterLeave( Self_: PControl; var Msg: TMsg; var Rslt: LRESULT ): Boolean;
|
||||
asm
|
||||
PUSH ESI
|
||||
XCHG ESI, EAX
|
||||
@@ -14906,7 +15115,7 @@ asm
|
||||
POP EAX
|
||||
end;
|
||||
|
||||
function TControl.FormGetIntParam: Integer;
|
||||
function TControl.FormGetIntParam: PtrInt;
|
||||
asm
|
||||
PUSH ESI
|
||||
PUSH EDI
|
||||
|
@@ -1,6 +1,6 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// KOL_ASM_NOUNICODE.inc (to inlude in KOL.pas)
|
||||
// v 3.141592
|
||||
// v 3.210
|
||||
|
||||
// this part of code is for case when ASM_VERSION is enabled and the symbol
|
||||
// UNICODE_CTRLS is NOT defined (functions, procedures and methods which work
|
||||
@@ -220,7 +220,7 @@ asm
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
function Int2Hex( Value : DWord; Digits : Integer ) : KOLString;
|
||||
function Int2Hex( Value : PtrUInt; Digits : Integer ) : KOLString;
|
||||
asm // EAX = Value
|
||||
// EDX = Digits
|
||||
// ECX = @Result
|
||||
@@ -257,7 +257,7 @@ asm // EAX = Value
|
||||
ADD ESP, 10h
|
||||
end;
|
||||
|
||||
function Hex2Int( const Value : AnsiString) : Integer;
|
||||
function Hex2Int( const Value : AnsiString) : PtrInt;
|
||||
asm
|
||||
CALL EAX2PChar
|
||||
PUSH ESI
|
||||
@@ -293,7 +293,7 @@ asm
|
||||
POP ESI
|
||||
end;
|
||||
|
||||
function Int2Str( Value : Integer ) : KOLString;
|
||||
function Int2Str( Value : PtrInt ) : KOLString;
|
||||
asm
|
||||
XOR ECX, ECX
|
||||
PUSH ECX
|
||||
@@ -2259,7 +2259,7 @@ asm //cmd //opd
|
||||
XOR EAX, EAX
|
||||
end;
|
||||
{$ELSE NEW VERSION OF WndProcTreeView}
|
||||
function WndProcTreeView( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcTreeView( Self_: PControl; var Msg: TMsg; var Rslt: LRESULT ): Boolean;
|
||||
asm
|
||||
PUSH ESI
|
||||
PUSH EDI
|
||||
@@ -2307,8 +2307,10 @@ asm
|
||||
RET
|
||||
@@chk_TVN_BEGINDRAG: ///////////////////////////////////////////////////////////
|
||||
CMP WORD PTR [EDX].TNMTreeView.hdr.code, TVN_BEGINDRAG
|
||||
{$IFDEF TV_DRAG_RBUTTON} //dufa
|
||||
JE @@beginDrag
|
||||
CMP WORD PTR [EDX].TNMTreeView.hdr.code, TVN_BEGINRDRAG
|
||||
{$ENDIF} //dufa
|
||||
JNE @@chk_TVNBEGINLABELEDIT
|
||||
@@beginDrag:
|
||||
PUSH [EDX].TNMTreeView.itemNew.hItem
|
||||
@@ -2636,7 +2638,7 @@ asm //cmd //opd
|
||||
POP EDI
|
||||
end;
|
||||
|
||||
function WndProcDateTimePickerNotify( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
|
||||
function WndProcDateTimePickerNotify( Self_: PControl; var Msg: TMsg; var Rslt: LRESULT ): Boolean;
|
||||
type
|
||||
TStrStr = record
|
||||
param_Date: TDateTime;
|
||||
@@ -3037,7 +3039,7 @@ asm
|
||||
end;
|
||||
|
||||
|
||||
function WndProcKeybd( Self_: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;
|
||||
function WndProcKeybd( Self_: PControl; var Msg: TMsg; var Rslt: LRESULT): Boolean;
|
||||
asm
|
||||
PUSH EBX
|
||||
MOV ECX, [EDX].TMsg.message
|
||||
@@ -3129,10 +3131,14 @@ asm
|
||||
@@getFCaption:
|
||||
MOV EDX, [EBX].fCaption
|
||||
XCHG EAX, EDI
|
||||
{$IFNDEF UNICODE_CTRLS}
|
||||
CALL System.@LStrAsg
|
||||
{$IFDEF UNICODE_CTRLS}
|
||||
{$IFDEF UStr_}
|
||||
CALL System.@UStrFromPChar
|
||||
{$ELSE}
|
||||
CALL System.@WStrFromPChar
|
||||
{$ENDIF}
|
||||
{$ELSE}
|
||||
CALL System.@WStrFromPChar
|
||||
CALL System.@LStrAsg
|
||||
{$ENDIF}
|
||||
@@exit:
|
||||
POP EDI
|
||||
@@ -3475,7 +3481,7 @@ asm
|
||||
POP EBX
|
||||
end;
|
||||
|
||||
procedure TTrayIcon.SetTrayIcon(const Value: DWORD);
|
||||
function TTrayIcon.SetTrayIcon(const Value: DWORD): Boolean;
|
||||
const sz_tid = sizeof( TNotifyIconData );
|
||||
asm
|
||||
CMP [AppletTerminated], 0
|
||||
@@ -3523,7 +3529,7 @@ asm
|
||||
@@exit:
|
||||
end;
|
||||
|
||||
function WndProcJustOneNotify( Control: PControl; var Msg: TMsg; var Rslt: Integer ) : Boolean;
|
||||
function WndProcJustOneNotify( Control: PControl; var Msg: TMsg; var Rslt: LRESULT ) : Boolean;
|
||||
asm
|
||||
PUSH EBP
|
||||
MOV EBP, ESP
|
||||
@@ -3734,6 +3740,7 @@ asm
|
||||
@@exit: POP EDX
|
||||
end;
|
||||
|
||||
{ maybebugged.dufa
|
||||
function TStrList.SaveToFile(const FileName: Ansistring): Boolean;
|
||||
asm
|
||||
PUSH EBX
|
||||
@@ -3767,7 +3774,7 @@ asm
|
||||
@@exit:
|
||||
POP EDX
|
||||
POP EBX
|
||||
end;
|
||||
end;}
|
||||
|
||||
procedure TControl.SetStatusText(Index: Integer; const Value: KOLString);
|
||||
asm
|
||||
@@ -4319,7 +4326,7 @@ asm
|
||||
ADD ESP, 1028
|
||||
end;
|
||||
|
||||
procedure TBitmap.LoadFromResourceName(Inst: DWORD; ResName: PAnsiChar);
|
||||
procedure TBitmap.LoadFromResourceName(Inst: HINST; ResName: PAnsiChar);
|
||||
asm
|
||||
PUSH EBX
|
||||
MOV EBX, EAX
|
||||
|
164
KOL_ansi.inc
164
KOL_ansi.inc
@@ -155,7 +155,7 @@ type
|
||||
NEWTEXTMETRIC = NEWTEXTMETRICA;
|
||||
PNewTextMetricExA = ^TNewTextMetricExA;
|
||||
// tagNEWTEXTMETRICEXA}
|
||||
tagNEWTEXTMETRICEXA = packed record
|
||||
tagNEWTEXTMETRICEXA = {packed} record
|
||||
ntmTm: TNewTextMetricA;
|
||||
ntmFontSig: TFontSignature;
|
||||
end;
|
||||
@@ -164,7 +164,7 @@ type
|
||||
NEWTEXTMETRICEXA = tagNEWTEXTMETRICEXA;
|
||||
PNewTextMetricExW = ^TNewTextMetricExW;
|
||||
// tagNEWTEXTMETRICEXW}
|
||||
tagNEWTEXTMETRICEXW = packed record
|
||||
tagNEWTEXTMETRICEXW = {packed} record
|
||||
ntmTm: TNewTextMetricW;
|
||||
ntmFontSig: TFontSignature;
|
||||
end;
|
||||
@@ -177,13 +177,13 @@ type
|
||||
PEnumLogFontW = ^TEnumLogFontW;
|
||||
PEnumLogFont = PEnumLogFontA;
|
||||
// tagENUMLOGFONTA}
|
||||
tagENUMLOGFONTA = packed record
|
||||
tagENUMLOGFONTA = {packed} record
|
||||
elfLogFont: TLogFontA;
|
||||
elfFullName: array[0..LF_FULLFACESIZE - 1] of AnsiChar;
|
||||
elfStyle: array[0..LF_FACESIZE - 1] of AnsiChar;
|
||||
end;
|
||||
// tagENUMLOGFONTW}
|
||||
tagENUMLOGFONTW = packed record
|
||||
tagENUMLOGFONTW = {packed} record
|
||||
elfLogFont: TLogFontW;
|
||||
elfFullName: array[0..LF_FULLFACESIZE - 1] of WideChar;
|
||||
elfStyle: array[0..LF_FACESIZE - 1] of WideChar;
|
||||
@@ -203,14 +203,14 @@ type
|
||||
PEnumLogFontExW = ^TEnumLogFontExW;
|
||||
PEnumLogFontEx = PEnumLogFontExA;
|
||||
// tagENUMLOGFONTEXA}
|
||||
tagENUMLOGFONTEXA = packed record
|
||||
tagENUMLOGFONTEXA = {packed} record
|
||||
elfLogFont: TLogFontA;
|
||||
elfFullName: array[0..LF_FULLFACESIZE - 1] of AnsiChar;
|
||||
elfStyle: array[0..LF_FACESIZE - 1] of AnsiChar;
|
||||
elfScript: array[0..LF_FACESIZE - 1] of AnsiChar;
|
||||
end;
|
||||
// tagENUMLOGFONTEXW}
|
||||
tagENUMLOGFONTEXW = packed record
|
||||
tagENUMLOGFONTEXW = {packed} record
|
||||
elfLogFont: TLogFontW;
|
||||
elfFullName: array[0..LF_FULLFACESIZE - 1] of WideChar;
|
||||
elfStyle: array[0..LF_FACESIZE - 1] of WideChar;
|
||||
@@ -271,14 +271,14 @@ type
|
||||
PDisplayDeviceW = ^TDisplayDeviceW;
|
||||
PDisplayDevice = PDisplayDeviceA;
|
||||
// _DISPLAY_DEVICEA}
|
||||
_DISPLAY_DEVICEA = packed record
|
||||
_DISPLAY_DEVICEA = {packed} record
|
||||
cb: DWORD;
|
||||
DeviceName: array[0..31] of AnsiChar;
|
||||
DeviceString: array[0..127] of AnsiChar;
|
||||
StateFlags: DWORD;
|
||||
end;
|
||||
// _DISPLAY_DEVICEW}
|
||||
_DISPLAY_DEVICEW = packed record
|
||||
_DISPLAY_DEVICEW = {packed} record
|
||||
cb: DWORD;
|
||||
DeviceName: array[0..31] of WideChar;
|
||||
DeviceString: array[0..127] of WideChar;
|
||||
@@ -377,7 +377,7 @@ type
|
||||
PPolyTextW = ^TPolyTextW;
|
||||
PPolyText = PPolyTextA;
|
||||
// tagPOLYTEXTA}
|
||||
tagPOLYTEXTA = packed record
|
||||
tagPOLYTEXTA = {packed} record
|
||||
x: Integer;
|
||||
y: Integer;
|
||||
n: UINT;
|
||||
@@ -387,7 +387,7 @@ type
|
||||
pdx: PINT;
|
||||
end;
|
||||
// tagPOLYTEXTW}
|
||||
tagPOLYTEXTW = packed record
|
||||
tagPOLYTEXTW = {packed} record
|
||||
x: Integer;
|
||||
y: Integer;
|
||||
n: UINT;
|
||||
@@ -411,7 +411,7 @@ type
|
||||
PGCPResultsW = ^TGCPResultsW;
|
||||
PGCPResults = PGCPResultsA;
|
||||
// tagGCP_RESULTSA}
|
||||
tagGCP_RESULTSA = packed record
|
||||
tagGCP_RESULTSA = {packed} record
|
||||
lStructSize: DWORD;
|
||||
lpOutString: PAnsiChar;
|
||||
lpOrder: PUINT;
|
||||
@@ -423,7 +423,7 @@ type
|
||||
nMaxFit: Integer;
|
||||
end;
|
||||
// tagGCP_RESULTSW}
|
||||
tagGCP_RESULTSW = packed record
|
||||
tagGCP_RESULTSW = {packed} record
|
||||
lStructSize: DWORD;
|
||||
lpOutString: PWideChar;
|
||||
lpOrder: PUINT;
|
||||
@@ -450,7 +450,7 @@ const
|
||||
MM_MAX_NUMAXES = 16;
|
||||
type
|
||||
PAxisInfoA = ^TAxisInfoA;
|
||||
tagAXISINFOA = packed record
|
||||
tagAXISINFOA = {packed} record
|
||||
axMinValue: Longint;
|
||||
axMaxValue: Longint;
|
||||
axAxisName: array[0..MM_MAX_AXES_NAMELEN-1] of AnsiChar;
|
||||
@@ -458,7 +458,7 @@ type
|
||||
TAxisInfoA = tagAXISINFOA;
|
||||
PAxisInfoW = ^TAxisInfoW;
|
||||
// tagAXISINFOW}
|
||||
tagAXISINFOW = packed record
|
||||
tagAXISINFOW = {packed} record
|
||||
axMinValue: Longint;
|
||||
axMaxValue: Longint;
|
||||
axAxisName: array[0..MM_MAX_AXES_NAMELEN-1] of WideChar;
|
||||
@@ -467,7 +467,7 @@ type
|
||||
PAxisInfo = PAxisInfoA;
|
||||
PAxesListA = ^TAxesListA;
|
||||
// tagAXESLISTA}
|
||||
tagAXESLISTA = packed record
|
||||
tagAXESLISTA = {packed} record
|
||||
axlReserved: DWORD;
|
||||
axlNumAxes: DWORD;
|
||||
axlAxisInfo: array[0..MM_MAX_NUMAXES-1] of TAxisInfoA;
|
||||
@@ -475,7 +475,7 @@ type
|
||||
TAxesListA = tagAXESLISTA;
|
||||
PAxesListW = ^TAxesListW;
|
||||
// tagAXESLISTW}
|
||||
tagAXESLISTW = packed record
|
||||
tagAXESLISTW = {packed} record
|
||||
axlReserved: DWORD;
|
||||
axlNumAxes: DWORD;
|
||||
axlAxisInfo: array[0..MM_MAX_NUMAXES-1] of TAxisInfoW;
|
||||
@@ -484,20 +484,20 @@ type
|
||||
PAxesList = PAxesListA;
|
||||
PEnumLogFontExDVA = ^TEnumLogFontExDVA;
|
||||
PDesignVector = ^TDesignVector;
|
||||
tagDESIGNVECTOR = packed record
|
||||
tagDESIGNVECTOR = {packed} record
|
||||
dvReserved: DWORD;
|
||||
dvNumAxes: DWORD;
|
||||
dvValues: array[0..MM_MAX_NUMAXES-1] of Longint;
|
||||
end;
|
||||
TDesignVector = tagDESIGNVECTOR;
|
||||
tagENUMLOGFONTEXDVA = packed record
|
||||
tagENUMLOGFONTEXDVA = {packed} record
|
||||
elfEnumLogfontEx: TEnumLogFontExA;
|
||||
elfDesignVector: TDesignVector;
|
||||
end;
|
||||
TEnumLogFontExDVA = tagENUMLOGFONTEXDVA;
|
||||
PEnumLogFontExDVW = ^TEnumLogFontExDVW;
|
||||
// tagENUMLOGFONTEXDVW}
|
||||
tagENUMLOGFONTEXDVW = packed record
|
||||
tagENUMLOGFONTEXDVW = {packed} record
|
||||
elfEnumLogfontEx: TEnumLogFontExW;
|
||||
elfDesignVector: TDesignVector;
|
||||
end;
|
||||
@@ -505,14 +505,14 @@ type
|
||||
PEnumLogFontExDV = PEnumLogFontExDVA;
|
||||
PEnumTextMetricA = ^TEnumTextMetricA;
|
||||
// tagENUMTEXTMETRICA}
|
||||
tagENUMTEXTMETRICA = packed record
|
||||
tagENUMTEXTMETRICA = {packed} record
|
||||
etmNewTextMetricEx: TNewTextMetricExA;
|
||||
etmAxesList: TAxesListA;
|
||||
end;
|
||||
TEnumTextMetricA = tagENUMTEXTMETRICA;
|
||||
PEnumTextMetricW = ^TEnumTextMetricW;
|
||||
// tagENUMTEXTMETRICW}
|
||||
tagENUMTEXTMETRICW = packed record
|
||||
tagENUMTEXTMETRICW = {packed} record
|
||||
etmNewTextMetricEx: TNewTextMetricExW;
|
||||
etmAxesList: TAxesListW;
|
||||
end;
|
||||
@@ -522,7 +522,7 @@ type
|
||||
PDocInfoW = ^TDocInfoW;
|
||||
PDocInfo = PDocInfoA;
|
||||
// _DOCINFOA}
|
||||
_DOCINFOA = packed record
|
||||
_DOCINFOA = {packed} record
|
||||
cbSize: Integer;
|
||||
lpszDocName: PAnsiChar;
|
||||
lpszOutput: PAnsiChar;
|
||||
@@ -530,7 +530,7 @@ type
|
||||
fwType: DWORD;
|
||||
end;
|
||||
// _DOCINFOW}
|
||||
_DOCINFOW = packed record
|
||||
_DOCINFOW = {packed} record
|
||||
cbSize: Integer;
|
||||
lpszDocName: PWideChar;
|
||||
lpszOutput: PWideChar;
|
||||
@@ -552,7 +552,7 @@ type
|
||||
PCreateStructW = ^TCreateStructW;
|
||||
PCreateStruct = PCreateStructA;
|
||||
// tagCREATESTRUCTA}
|
||||
tagCREATESTRUCTA = packed record
|
||||
tagCREATESTRUCTA = {packed} record
|
||||
lpCreateParams: Pointer;
|
||||
hInstance: HINST;
|
||||
hMenu: HMENU;
|
||||
@@ -567,7 +567,7 @@ type
|
||||
dwExStyle: DWORD;
|
||||
end;
|
||||
// tagCREATESTRUCTW}
|
||||
tagCREATESTRUCTW = packed record
|
||||
tagCREATESTRUCTW = {packed} record
|
||||
lpCreateParams: Pointer;
|
||||
hInstance: HINST;
|
||||
hMenu: HMENU;
|
||||
@@ -596,7 +596,7 @@ type
|
||||
PWndClassExW = ^TWndClassExW;
|
||||
PWndClassEx = PWndClassExA;
|
||||
// tagWNDCLASSEXA}
|
||||
tagWNDCLASSEXA = packed record
|
||||
tagWNDCLASSEXA = {packed} record
|
||||
cbSize: UINT;
|
||||
style: UINT;
|
||||
lpfnWndProc: TFNWndProc;
|
||||
@@ -611,7 +611,7 @@ type
|
||||
hIconSm: HICON;
|
||||
end;
|
||||
// tagWNDCLASSEXW}
|
||||
tagWNDCLASSEXW = packed record
|
||||
tagWNDCLASSEXW = {packed} record
|
||||
cbSize: UINT;
|
||||
style: UINT;
|
||||
lpfnWndProc: TFNWndProc;
|
||||
@@ -641,7 +641,7 @@ type
|
||||
PWndClassW = ^TWndClassW;
|
||||
PWndClass = PWndClassA;
|
||||
// tagWNDCLASSA}
|
||||
tagWNDCLASSA = packed record
|
||||
tagWNDCLASSA = {packed} record
|
||||
style: UINT;
|
||||
lpfnWndProc: TFNWndProc;
|
||||
cbClsExtra: Integer;
|
||||
@@ -654,7 +654,7 @@ type
|
||||
lpszClassName: PAnsiChar;
|
||||
end;
|
||||
// tagWNDCLASSW}
|
||||
tagWNDCLASSW = packed record
|
||||
tagWNDCLASSW = {packed} record
|
||||
style: UINT;
|
||||
lpfnWndProc: TFNWndProc;
|
||||
cbClsExtra: Integer;
|
||||
@@ -706,7 +706,7 @@ type
|
||||
PMsgBoxParamsA = ^TMsgBoxParamsA;
|
||||
PMsgBoxParamsW = ^TMsgBoxParamsW;
|
||||
// tagMSGBOXPARAMSA}
|
||||
tagMSGBOXPARAMSA = packed record
|
||||
tagMSGBOXPARAMSA = {packed} record
|
||||
cbSize: UINT;
|
||||
hwndOwner: HWND;
|
||||
hInstance: HINST;
|
||||
@@ -719,7 +719,7 @@ type
|
||||
dwLanguageId: DWORD;
|
||||
end;
|
||||
// tagMSGBOXPARAMSW}
|
||||
tagMSGBOXPARAMSW = packed record
|
||||
tagMSGBOXPARAMSW = {packed} record
|
||||
cbSize: UINT;
|
||||
hwndOwner: HWND;
|
||||
hInstance: HINST;
|
||||
@@ -806,7 +806,7 @@ type
|
||||
// HELPWININFO}
|
||||
HELPWININFO = HELPWININFOA;
|
||||
// tagNONCLIENTMETRICSA}
|
||||
tagNONCLIENTMETRICSA = packed record
|
||||
tagNONCLIENTMETRICSA = {packed} record
|
||||
cbSize: UINT;
|
||||
iBorderWidth: Integer;
|
||||
iScrollWidth: Integer;
|
||||
@@ -824,7 +824,7 @@ type
|
||||
lfMessageFont: TLogFontA;
|
||||
end;
|
||||
// tagNONCLIENTMETRICSW}
|
||||
tagNONCLIENTMETRICSW = packed record
|
||||
tagNONCLIENTMETRICSW = {packed} record
|
||||
cbSize: UINT;
|
||||
iBorderWidth: Integer;
|
||||
iScrollWidth: Integer;
|
||||
@@ -856,7 +856,7 @@ type
|
||||
// NONCLIENTMETRICS}
|
||||
NONCLIENTMETRICS = NONCLIENTMETRICSA;
|
||||
// tagICONMETRICSA}
|
||||
tagICONMETRICSA = packed record
|
||||
tagICONMETRICSA = {packed} record
|
||||
cbSize: UINT;
|
||||
iHorzSpacing: Integer;
|
||||
iVertSpacing: Integer;
|
||||
@@ -864,7 +864,7 @@ type
|
||||
lfFont: TLogFontA;
|
||||
end;
|
||||
// tagICONMETRICSW}
|
||||
tagICONMETRICSW = packed record
|
||||
tagICONMETRICSW = {packed} record
|
||||
cbSize: UINT;
|
||||
iHorzSpacing: Integer;
|
||||
iVertSpacing: Integer;
|
||||
@@ -890,7 +890,7 @@ type
|
||||
PSerialKeysA = ^TSerialKeysA;
|
||||
PSerialKeysW = ^TSerialKeysW;
|
||||
// tagSERIALKEYSA}
|
||||
tagSERIALKEYSA = packed record
|
||||
tagSERIALKEYSA = {packed} record
|
||||
cbSize: UINT;
|
||||
dwFlags: DWORD;
|
||||
lpszActivePort: PAnsiChar;
|
||||
@@ -900,7 +900,7 @@ type
|
||||
iActive: UINT;
|
||||
end;
|
||||
// tagSERIALKEYSW}
|
||||
tagSERIALKEYSW = packed record
|
||||
tagSERIALKEYSW = {packed} record
|
||||
cbSize: UINT;
|
||||
dwFlags: DWORD;
|
||||
lpszActivePort: PWideChar;
|
||||
@@ -924,13 +924,13 @@ type
|
||||
PHighContrastA = ^THighContrastA;
|
||||
PHighContrastW = ^THighContrastW;
|
||||
// tagHIGHCONTRASTA}
|
||||
tagHIGHCONTRASTA = packed record
|
||||
tagHIGHCONTRASTA = {packed} record
|
||||
cbSize: UINT;
|
||||
dwFlags: DWORD;
|
||||
lpszDefaultScheme: PAnsiChar;
|
||||
end;
|
||||
// tagHIGHCONTRASTW}
|
||||
tagHIGHCONTRASTW = packed record
|
||||
tagHIGHCONTRASTW = {packed} record
|
||||
cbSize: UINT;
|
||||
dwFlags: DWORD;
|
||||
lpszDefaultScheme: PWideChar;
|
||||
@@ -950,7 +950,7 @@ type
|
||||
PSoundsEntryA = ^TSoundsEntryA;
|
||||
PSoundsEntryW = ^TSoundsEntryW;
|
||||
// tagSOUNDSENTRYA}
|
||||
tagSOUNDSENTRYA = packed record
|
||||
tagSOUNDSENTRYA = {packed} record
|
||||
cbSize: UINT;
|
||||
dwFlags: DWORD;
|
||||
iFSTextEffect: DWORD;
|
||||
@@ -965,7 +965,7 @@ type
|
||||
iWindowsEffectOrdinal: DWORD;
|
||||
end;
|
||||
// tagSOUNDSENTRYW}
|
||||
tagSOUNDSENTRYW = packed record
|
||||
tagSOUNDSENTRYW = {packed} record
|
||||
cbSize: UINT;
|
||||
dwFlags: DWORD;
|
||||
iFSTextEffect: DWORD;
|
||||
@@ -994,7 +994,7 @@ type
|
||||
PNumberFmtA = ^TNumberFmtA;
|
||||
PNumberFmtW = ^TNumberFmtW;
|
||||
// _numberfmtA}
|
||||
_numberfmtA = packed record
|
||||
_numberfmtA = {packed} record
|
||||
NumDigits: UINT; { number of decimal digits }
|
||||
LeadingZero: UINT; { if leading zero in decimal fields }
|
||||
Grouping: UINT; { group size left of decimal }
|
||||
@@ -1003,7 +1003,7 @@ type
|
||||
NegativeOrder: UINT; { negative number ordering }
|
||||
end;
|
||||
// _numberfmtW}
|
||||
_numberfmtW = packed record
|
||||
_numberfmtW = {packed} record
|
||||
NumDigits: UINT; { number of decimal digits }
|
||||
LeadingZero: UINT; { if leading zero in decimal fields }
|
||||
Grouping: UINT; { group size left of decimal }
|
||||
@@ -1025,7 +1025,7 @@ type
|
||||
PCurrencyFmtA = ^TCurrencyFmtA;
|
||||
PCurrencyFmtW = ^TCurrencyFmtW;
|
||||
// _currencyfmtA}
|
||||
_currencyfmtA = packed record
|
||||
_currencyfmtA = {packed} record
|
||||
NumDigits: UINT; { number of decimal digits }
|
||||
LeadingZero: UINT; { if leading zero in decimal fields }
|
||||
Grouping: UINT; { group size left of decimal }
|
||||
@@ -1036,7 +1036,7 @@ type
|
||||
lpCurrencySymbol: PAnsiChar; { ptr to currency symbol AnsiString }
|
||||
end;
|
||||
// _currencyfmtW}
|
||||
_currencyfmtW = packed record
|
||||
_currencyfmtW = {packed} record
|
||||
NumDigits: UINT; { number of decimal digits }
|
||||
LeadingZero: UINT; { if leading zero in decimal fields }
|
||||
Grouping: UINT; { group size left of decimal }
|
||||
@@ -1062,14 +1062,14 @@ type
|
||||
PPValueA = ^TPValueA;
|
||||
PPValueW = ^TPValueW;
|
||||
// pvalueA}
|
||||
pvalueA = packed record
|
||||
pvalueA = {packed} record
|
||||
pv_valuename: PAnsiChar; { The value name pointer }
|
||||
pv_valuelen: BOOL;
|
||||
pv_value_context: Pointer;
|
||||
pv_type: DWORD;
|
||||
end;
|
||||
// pvalueW}
|
||||
pvalueW = packed record
|
||||
pvalueW = {packed} record
|
||||
pv_valuename: PWideChar; { The value name pointer }
|
||||
pv_valuelen: BOOL;
|
||||
pv_value_context: Pointer;
|
||||
@@ -1085,14 +1085,14 @@ type
|
||||
PValueEntA = ^TValueEntA;
|
||||
PValueEntW = ^TValueEntW;
|
||||
// value_entA}
|
||||
value_entA = packed record
|
||||
value_entA = {packed} record
|
||||
ve_valuename: PAnsiChar;
|
||||
ve_valuelen: DWORD;
|
||||
ve_valueptr: DWORD;
|
||||
ve_type: DWORD;
|
||||
end;
|
||||
// value_entW}
|
||||
value_entW = packed record
|
||||
value_entW = {packed} record
|
||||
ve_valuename: PWideChar;
|
||||
ve_valuelen: DWORD;
|
||||
ve_valueptr: DWORD;
|
||||
@@ -1115,7 +1115,7 @@ type
|
||||
PNetResourceA = ^TNetResourceA;
|
||||
PNetResourceW = ^TNetResourceW;
|
||||
// _NETRESOURCEA}
|
||||
_NETRESOURCEA = packed record
|
||||
_NETRESOURCEA = {packed} record
|
||||
dwScope: DWORD;
|
||||
dwType: DWORD;
|
||||
dwDisplayType: DWORD;
|
||||
@@ -1126,7 +1126,7 @@ type
|
||||
lpProvider: PAnsiChar;
|
||||
end;
|
||||
// _NETRESOURCEW}
|
||||
_NETRESOURCEW = packed record
|
||||
_NETRESOURCEW = {packed} record
|
||||
dwScope: DWORD;
|
||||
dwType: DWORD;
|
||||
dwDisplayType: DWORD;
|
||||
@@ -1150,7 +1150,7 @@ type
|
||||
PDiscDlgStructA = ^TDiscDlgStructA;
|
||||
PDiscDlgStructW = ^TDiscDlgStructW;
|
||||
// _DISCDLGSTRUCTA}
|
||||
_DISCDLGSTRUCTA = packed record
|
||||
_DISCDLGSTRUCTA = {packed} record
|
||||
cbStructure: DWORD; { size of this structure in bytes }
|
||||
hwndOwner: HWND; { owner window for the dialog }
|
||||
lpLocalName: PAnsiChar; { local device name }
|
||||
@@ -1158,7 +1158,7 @@ type
|
||||
dwFlags: DWORD;
|
||||
end;
|
||||
// _DISCDLGSTRUCTW}
|
||||
_DISCDLGSTRUCTW = packed record
|
||||
_DISCDLGSTRUCTW = {packed} record
|
||||
cbStructure: DWORD; { size of this structure in bytes }
|
||||
hwndOwner: HWND; { owner window for the dialog }
|
||||
lpLocalName: PWideChar; { local device name }
|
||||
@@ -1181,11 +1181,11 @@ type
|
||||
PUniversalNameInfoA = ^TUniversalNameInfoA;
|
||||
PUniversalNameInfoW = ^TUniversalNameInfoW;
|
||||
// _UNIVERSAL_NAME_INFOA}
|
||||
_UNIVERSAL_NAME_INFOA = packed record
|
||||
_UNIVERSAL_NAME_INFOA = {packed} record
|
||||
lpUniversalName: PAnsiChar;
|
||||
end;
|
||||
// _UNIVERSAL_NAME_INFOW}
|
||||
_UNIVERSAL_NAME_INFOW = packed record
|
||||
_UNIVERSAL_NAME_INFOW = {packed} record
|
||||
lpUniversalName: PWideChar;
|
||||
end;
|
||||
// _UNIVERSAL_NAME_INFO}
|
||||
@@ -1203,13 +1203,13 @@ type
|
||||
PRemoteNameInfoA = ^TRemoteNameInfoA;
|
||||
PRemoteNameInfoW = ^TRemoteNameInfoW;
|
||||
// _REMOTE_NAME_INFOA}
|
||||
_REMOTE_NAME_INFOA = packed record
|
||||
_REMOTE_NAME_INFOA = {packed} record
|
||||
lpUniversalName: PAnsiChar;
|
||||
lpConnectionName: PAnsiChar;
|
||||
lpRemainingPath: PAnsiChar;
|
||||
end;
|
||||
// _REMOTE_NAME_INFOW}
|
||||
_REMOTE_NAME_INFOW = packed record
|
||||
_REMOTE_NAME_INFOW = {packed} record
|
||||
lpUniversalName: PWideChar;
|
||||
lpConnectionName: PWideChar;
|
||||
lpRemainingPath: PWideChar;
|
||||
@@ -1237,7 +1237,7 @@ type
|
||||
{$ENDIF _D3orHigher}
|
||||
{ Alt-Tab Switch window information. }
|
||||
PAltTabInfo = ^TAltTabInfo;
|
||||
tagALTTABINFO = packed record
|
||||
tagALTTABINFO = {packed} record
|
||||
cbSize: DWORD;
|
||||
cItems: Integer;
|
||||
cColumns: Integer;
|
||||
@@ -1703,7 +1703,7 @@ function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT;
|
||||
// uiMessage: UINT; wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
|
||||
function CallMsgFilter(var lpMsg: TMsg; nCode: Integer): BOOL; stdcall;
|
||||
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
|
||||
function ChangeDisplaySettings(var lpDevMode: TDeviceMode; dwFlags: DWORD): Longint; stdcall;
|
||||
function ChangeDisplaySettings(const lpDevMode: PDeviceMode; dwFlags: DWORD): Longint; stdcall;
|
||||
function ChangeDisplaySettingsEx(lpszDeviceName: PKOLChar; var lpDevMode: TDeviceMode;
|
||||
wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint; stdcall;
|
||||
function ChangeMenu(hMenu: HMENU; cmd: UINT; lpszNewItem: PKOLChar;
|
||||
@@ -1743,7 +1743,7 @@ function DialogBoxIndirectParam(hInstance: HINST; const lpDialogTemplate: TDlgTe
|
||||
hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): Integer; stdcall;
|
||||
function DialogBoxParam(hInstance: HINST; lpTemplateName: PKOLChar;
|
||||
hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): Integer; stdcall;
|
||||
function DispatchMessage(const lpMsg: TMsg): Longint; stdcall;
|
||||
function DispatchMessage(const lpMsg: TMsg): LRESULT; stdcall;
|
||||
function DlgDirList(hDlg: HWND; lpPathSpec: PKOLChar;
|
||||
nIDListBox, nIDStaticPath: Integer; uFileType: UINT): Integer; stdcall;
|
||||
function DlgDirListComboBox(hDlg: HWND; lpPathSpec: PKOLChar;
|
||||
@@ -1798,7 +1798,7 @@ function GrayString(hDC: HDC; hBrush: HBRUSH; lpOutputFunc: TFNGrayStringProc;
|
||||
lpData: LPARAM; nCount, X, Y, nWidth, nHeight: Integer): BOOL; stdcall;
|
||||
function InsertMenu(hMenu: HMENU; uPosition, uFlags, uIDNewItem: UINT;
|
||||
lpNewItem: PKOLChar): BOOL; stdcall;
|
||||
function InsertMenuItem(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfo): BOOL; stdcall;
|
||||
function InsertMenuItem(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfoA): BOOL; stdcall;
|
||||
function IsCharAlpha(ch: KOLChar): BOOL; stdcall;
|
||||
function IsCharAlphaNumeric(ch: KOLChar): BOOL; stdcall;
|
||||
function IsCharLower(ch: KOLChar): BOOL; stdcall;
|
||||
@@ -1890,6 +1890,20 @@ const
|
||||
IDC_HANDs = MakeIntResource(32649);
|
||||
IDC_APPSTARTING = MakeIntResource(32650);
|
||||
IDC_HELP = MakeIntResource(32651);
|
||||
|
||||
function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
|
||||
function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
|
||||
function GetWindowLongPtrA(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
|
||||
function SetWindowLongPtrA(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
|
||||
function GetWindowLongPtrW(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
|
||||
function SetWindowLongPtrW(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
|
||||
function GetClassLongPtr(hWnd: HWND; nIndex: Integer): ULONG_PTR; stdcall;
|
||||
function SetClassLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): ULONG_PTR; stdcall;
|
||||
function GetClassLongPtrA(hWnd: HWND; nIndex: Integer): ULONG_PTR; stdcall;
|
||||
function SetClassLongPtrA(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): ULONG_PTR; stdcall;
|
||||
function GetClassLongPtrW(hWnd: HWND; nIndex: Integer): ULONG_PTR; stdcall;
|
||||
function SetClassLongPtrW(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): ULONG_PTR; stdcall;
|
||||
|
||||
{$ENDIF interface_part} ////////////////////////////////////////////////////////
|
||||
|
||||
{$IFDEF implementation_part} ///////////////////////////////////////////////////
|
||||
@@ -2312,5 +2326,31 @@ function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL
|
||||
begin
|
||||
Result := _CreateMutex(lpMutexAttributes, Integer(Boolean(bInitialOwner)), lpName);
|
||||
end;
|
||||
|
||||
{$IFDEF WIN64}
|
||||
function GetWindowLongPtr; external user32 name 'GetWindowLongPtrA';
|
||||
function SetWindowLongPtr; external user32 name 'SetWindowLongPtrA';
|
||||
function GetClassLongPtr; external user32 name 'GetClassLongPtrA';
|
||||
function SetClassLongPtr; external user32 name 'SetClassLongPtrA';
|
||||
function GetWindowLongPtrA; external user32 name 'GetWindowLongPtrA';
|
||||
function SetWindowLongPtrA; external user32 name 'SetWindowLongPtrA';
|
||||
function GetClassLongPtrA; external user32 name 'GetClassLongPtrA';
|
||||
function SetClassLongPtrA; external user32 name 'SetClassLongPtrA';
|
||||
function GetWindowLongPtrW; external user32 name 'GetWindowLongPtrW';
|
||||
function SetWindowLongPtrW; external user32 name 'SetWindowLongPtrW';
|
||||
function GetClassLongPtrW; external user32 name 'GetClassLongPtrW';
|
||||
function SetClassLongPtrW; external user32 name 'SetClassLongPtrW';
|
||||
{$ELSE}
|
||||
function GetWindowLongPtr; external user32 name 'GetWindowLongA';
|
||||
function SetWindowLongPtr; external user32 name 'SetWindowLongA';
|
||||
function GetClassLongPtr; external user32 name 'GetClassLongA';
|
||||
function SetClassLongPtr; external user32 name 'SetClassLongA';
|
||||
function GetWindowLongPtrA; external user32 name 'GetWindowLongA';
|
||||
function SetWindowLongPtrA; external user32 name 'SetWindowLongA';
|
||||
function GetClassLongPtrA; external user32 name 'GetClassLongA';
|
||||
function SetClassLongPtrA; external user32 name 'SetClassLongA';
|
||||
function GetWindowLongPtrW; external user32 name 'GetWindowLongW';
|
||||
function SetWindowLongPtrW; external user32 name 'SetWindowLongW';
|
||||
function GetClassLongPtrW; external user32 name 'GetClassLongW';
|
||||
function SetClassLongPtrW; external user32 name 'SetClassLongW';
|
||||
{$ENDIF}
|
||||
{$ENDIF implementation_part} ///////////////////////////////////////////////////
|
||||
|
@@ -623,6 +623,7 @@ function wglUseFontOutlines(p1: HDC; p2, p3, p4: DWORD;
|
||||
p5, p6: Single; p7: Integer; p8: PGlyphMetricsFloat): BOOL; stdcall;
|
||||
function AnsiToOem(const lpszSrc: LPCSTR; lpszDst: LPSTR): BOOL; stdcall;
|
||||
function AnsiToOemBuff(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
|
||||
function AnsiToOemBuffA(lpszSrc: LPCSTR; lpszDst: LPSTR; cchDstLength: DWORD): BOOL; stdcall;
|
||||
function AnsiUpper(lpsz: LPSTR): LPSTR; stdcall;
|
||||
function AnsiUpperBuff(lpsz: LPSTR; cchLength: DWORD): DWORD; stdcall;
|
||||
function AnsiLower(lpsz: LPSTR): LPSTR; stdcall;
|
||||
@@ -677,7 +678,7 @@ function DialogBoxIndirectParam(hInstance: HINST; const lpDialogTemplate: TDlgTe
|
||||
hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): Integer; stdcall;
|
||||
function DialogBoxParam(hInstance: HINST; lpTemplateName: PKOLChar;
|
||||
hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): Integer; stdcall;
|
||||
function DispatchMessage(const lpMsg: TMsg): Longint; stdcall;
|
||||
function DispatchMessage(const lpMsg: TMsg): LRESULT; stdcall;
|
||||
function DlgDirList(hDlg: HWND; lpPathSpec: PKOLChar;
|
||||
nIDListBox, nIDStaticPath: Integer; uFileType: UINT): Integer; stdcall;
|
||||
function DlgDirListComboBox(hDlg: HWND; lpPathSpec: PKOLChar;
|
||||
@@ -848,6 +849,31 @@ const
|
||||
RT_ANICURSOR = PKOLChar(21);
|
||||
RT_ANIICON = PKOLChar(22);
|
||||
|
||||
{$EXTERNALSYM GetWindowLongPtr}
|
||||
function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
|
||||
{$EXTERNALSYM SetWindowLongPtr}
|
||||
function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
|
||||
{$EXTERNALSYM GetWindowLongPtrA}
|
||||
function GetWindowLongPtrA(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
|
||||
{$EXTERNALSYM SetWindowLongPtrA}
|
||||
function SetWindowLongPtrA(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
|
||||
{$EXTERNALSYM GetWindowLongPtrW}
|
||||
function GetWindowLongPtrW(hWnd: HWND; nIndex: Integer): LONG_PTR; stdcall;
|
||||
{$EXTERNALSYM SetWindowLongPtrW}
|
||||
function SetWindowLongPtrW(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): LONG_PTR; stdcall;
|
||||
{$EXTERNALSYM GetClassLongPtr}
|
||||
function GetClassLongPtr(hWnd: HWND; nIndex: Integer): ULONG_PTR; stdcall;
|
||||
{$EXTERNALSYM SetClassLongPtr}
|
||||
function SetClassLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): ULONG_PTR; stdcall;
|
||||
{$EXTERNALSYM GetClassLongPtrA}
|
||||
function GetClassLongPtrA(hWnd: HWND; nIndex: Integer): ULONG_PTR; stdcall;
|
||||
{$EXTERNALSYM SetClassLongPtrA}
|
||||
function SetClassLongPtrA(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): ULONG_PTR; stdcall;
|
||||
{$EXTERNALSYM GetClassLongPtrW}
|
||||
function GetClassLongPtrW(hWnd: HWND; nIndex: Integer): ULONG_PTR; stdcall;
|
||||
{$EXTERNALSYM SetClassLongPtrW}
|
||||
function SetClassLongPtrW(hWnd: HWND; nIndex: Integer; dwNewLong: LONG_PTR): ULONG_PTR; stdcall;
|
||||
|
||||
{$ENDIF interface_part} ////////////////////////////////////////////////////////
|
||||
|
||||
{$IFDEF implementation_part} ///////////////////////////////////////////////////
|
||||
@@ -1124,6 +1150,7 @@ function wglUseFontBitmaps; external opengl32 name 'wglUseFontBitmapsW';
|
||||
function wglUseFontOutlines; external opengl32 name 'wglUseFontOutlinesW';
|
||||
function AnsiToOem; external user32 name 'CharToOemW';
|
||||
function AnsiToOemBuff; external user32 name 'CharToOemBuffW';
|
||||
function AnsiToOemBuffA; external user32 name 'CharToOemBuffA';
|
||||
function AnsiUpper; external user32 name 'CharUpperW';
|
||||
function AnsiUpperBuff; external user32 name 'CharUpperBuffW';
|
||||
function AnsiLower; external user32 name 'CharLowerW';
|
||||
@@ -1274,4 +1301,31 @@ function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL
|
||||
begin
|
||||
Result := _CreateMutex(lpMutexAttributes, Integer(Boolean(bInitialOwner)), lpName);
|
||||
end;
|
||||
{$ENDIF implementation_part} ///////////////////////////////////////////////////
|
||||
{$IFDEF WIN64}
|
||||
function GetWindowLongPtr; external user32 name 'GetWindowLongPtrW';
|
||||
function SetWindowLongPtr; external user32 name 'SetWindowLongPtrW';
|
||||
function GetClassLongPtr; external user32 name 'GetClassLongPtrW';
|
||||
function SetClassLongPtr; external user32 name 'SetClassLongPtrW';
|
||||
function GetWindowLongPtrA; external user32 name 'GetWindowLongPtrA';
|
||||
function SetWindowLongPtrA; external user32 name 'SetWindowLongPtrA';
|
||||
function GetClassLongPtrA; external user32 name 'GetClassLongPtrA';
|
||||
function SetClassLongPtrA; external user32 name 'SetClassLongPtrA';
|
||||
function GetWindowLongPtrW; external user32 name 'GetWindowLongPtrW';
|
||||
function SetWindowLongPtrW; external user32 name 'SetWindowLongPtrW';
|
||||
function GetClassLongPtrW; external user32 name 'GetClassLongPtrW';
|
||||
function SetClassLongPtrW; external user32 name 'SetClassLongPtrW';
|
||||
{$ELSE}
|
||||
function GetWindowLongPtr; external user32 name 'GetWindowLongW';
|
||||
function SetWindowLongPtr; external user32 name 'SetWindowLongW';
|
||||
function GetClassLongPtr; external user32 name 'GetClassLongW';
|
||||
function SetClassLongPtr; external user32 name 'SetClassLongW';
|
||||
function GetWindowLongPtrA; external user32 name 'GetWindowLongA';
|
||||
function SetWindowLongPtrA; external user32 name 'SetWindowLongA';
|
||||
function GetClassLongPtrA; external user32 name 'GetClassLongA';
|
||||
function SetClassLongPtrA; external user32 name 'SetClassLongA';
|
||||
function GetWindowLongPtrW; external user32 name 'GetWindowLongW';
|
||||
function SetWindowLongPtrW; external user32 name 'SetWindowLongW';
|
||||
function GetClassLongPtrW; external user32 name 'GetClassLongW';
|
||||
function SetClassLongPtrW; external user32 name 'SetClassLongW';
|
||||
{$ENDIF}
|
||||
{$ENDIF implementation_part} ///////////////////////////////////////////////////
|
54
whatsnew.txt
54
whatsnew.txt
@@ -1,3 +1,57 @@
|
||||
-------------------------------------------------------------------
|
||||
3.12.14
|
||||
-------------------------------------------------------------------
|
||||
Merge with unofficial 3.22 version compatible with fpc 2.6.4 and 2.7.1 i386 and x64 compilers by "Dmitri K dmiko@mail333.com (dmiko)" principal work
|
||||
and "Thaddy de Koning thaddy@thaddy.com" (merge 3.22)
|
||||
|
||||
KOL:
|
||||
* a LOT of declarations\fixes for x64\FPC support (by dmiko and Thaddy)
|
||||
+ TList.SortEx - for custom sorting Items
|
||||
+ TStrList.IndexOfName_NoCaseFast, TStrList.IndexOfName_Fast, TStrList.Values_NocaseFast[], TStrList.Values_Fast[] - faster than TStrList.IndexOfName\Values\etc..
|
||||
+ TStrList.Remove\RemoveByName - Removes first entry of a Value\LineName in the list
|
||||
+ TStrList.IsEmpty - check list empty
|
||||
+ TStrList.Add2\Insert2\Delete2\Items2[Idx, Col]\Swap2\IndexOf2\Count2\ColsCount - work with TStrList like with table[Idx, Col]
|
||||
+ TStrListEx.SortEx - for custom sorting Items with Objects
|
||||
* SVN_BUG#1: TStrListEx.SortEx - breaks objects association fixed (thanks to tacituseu)
|
||||
* SVN_BUG#2: TControl.FreeCharFormatRec - fixed STATIC_RICHEDIT_DATA define (by tacituseu)
|
||||
* TControl.LVColInsert - return inserted col index
|
||||
+ TControl.LVGetHeader - Gets the handle to the header control used by the list-view control
|
||||
+ TControl.LVSubItemAtPos - Return index of subitem at the given position
|
||||
+ TControl.LVIndexOfEx - Returns first list view item index with subitem ACol matching S
|
||||
+ TControl.TVItemInsert - extended version of TVInsert: can set images and set ItemData
|
||||
* NewReadWriteFileStream - smaller code by use winapi flag ofOpenAlways instead FileExists function
|
||||
* TMenu.Destroy\RemoveSubMenu - fixed memory leak on destroy (by dotnet20)
|
||||
* CallDefFrameProc - fixed crash when use MDI
|
||||
- ASM: TStrList.AddStrings\LoadFromStream\MergeFromFile\SaveToFile - switched off because maybe can get crash (need tests)
|
||||
* PAS: TStrList.LoadFromStream\SaveToFile - fixed
|
||||
* TStrList.IndexOfName - small speedup
|
||||
* TStrList.IndexOfName_NoCase - this code "while (p^ <> #0) and (p^ <= ' ') do inc( p );" is deleted, because sometimes get deadlock (wtf code doing!?)
|
||||
* ASM: WndProcTreeView - fixed TV_DRAG_RBUTTON define
|
||||
+ TFastStrListEx.NameDelimiter - like in TStrList
|
||||
+ TFastStrListEx.SetValue - like in TStrList
|
||||
|
||||
MCK:
|
||||
* updated to MCK v3.23 (with some fixes)
|
||||
* MCKAppExpert200x wizard - fixed unit name
|
||||
* TKOLListView.SetupLast - fixed crash
|
||||
+ TKOLListView.OnLVCustomDraw - added event assign
|
||||
+ TKOLMemo.Paint\WYSIWIGPaintImplemented - add visual style for memo in designer mode
|
||||
+ !!!ALPHA VERSION!!!: ux visual style mode for some controls in designer mode (PaintType: ptWYSIWIG) (WinXP minimum req.)
|
||||
|
||||
err.pas:
|
||||
* moved from addons to kolmck folder
|
||||
* fixed exception.message in IDE
|
||||
* source code formating
|
||||
|
||||
common:
|
||||
* cleaning...
|
||||
* updated readmes
|
||||
* dpk packages replaced and renamed (KOLMCKXXXX.dpk)
|
||||
|
||||
maybe forgot something...
|
||||
|
||||
KOLAddons package will be updated later..
|
||||
|
||||
-------------------------------------------------------------------
|
||||
24.03.10
|
||||
-------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user