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:
dkolmck
2014-12-03 10:48:30 +00:00
parent 75cb04e69f
commit fe96fa0950
6 changed files with 3532 additions and 1813 deletions

4689
KOL.pas

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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

View File

@@ -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} ///////////////////////////////////////////////////

View File

@@ -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} ///////////////////////////////////////////////////

View File

@@ -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
-------------------------------------------------------------------