unit utslvclmemstruct; {** @explan(说明) 接口内存管理类 %% @date(20220429) %% **} interface uses cstructurelib,utslvclauxiliary; type TTagMSG=class(tslcstructureobj) {** @explan(说明) 消息循环对象类 %% **} private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hwnd","intptr",0), ("message","int",0), ("wparam","intptr",0), ("lparam","intptr",0), ("time","int",0), ("pt","int[2]", (0,0)), ("lprivate","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property hwnd index "hwnd" read _getvalue_ write _setvalue_; property message index "message" read _getvalue_ write _setvalue_; property wparam index "wparam" read _getvalue_ write _setvalue_; property lparam index "lparam" read _getvalue_ write _setvalue_; property time index "time" read _getvalue_ write _setvalue_; property pt index "pt" read _getvalue_ write _setvalue_; property lprivate index "lprivate" read _getvalue_ write _setvalue_; end type TNOTIFYICONDATAA=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("cbsize","int",0), ("hwnd","intptr",0), ("uid","int",0), ("uflags","int",0), ("ucallbackmessage","int",0), ("hicon","intptr",0), ("sztip","char[128]",0), ("dwstate","int",0), ("dwstatemask","int",0), ("szinfo","char[256]",0), ("dummyunionname","int",0), ("szinfotitle","char[64]",0), ("dwinfoflags","int",0), ("guiditem","user",( ("data1","int",0),("data2","short",0),("data3","short",0),("data4","char[8]","") )), ("hballoonicon","intptr",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); cbsize := _size_(); end property cbsize index "cbsize" read _getvalue_ write _setvalue_; property hwnd index "hwnd" read _getvalue_ write _setvalue_; property uid index "uid" read _getvalue_ write _setvalue_; property uflags index "uflags" read _getvalue_ write _setvalue_; property ucallbackmessage index "ucallbackmessage" read _getvalue_ write _setvalue_; property hicon index "hicon" read _getvalue_ write _setvalue_; property sztip index "sztip" read _getvalue_ write _setvalue_; property dwstate index "dwstate" read _getvalue_ write _setvalue_; property dwstatemask index "dwstatemask" read _getvalue_ write _setvalue_; property szinfo index "szinfo" read _getvalue_ write _setvalue_; property uTimeout index "dummyunionname" read _getvalue_ write _setvalue_; property uVersion index "dummyunionname" read _getvalue_ write _setvalue_; property dummyunionname index "dummyunionname" read _getvalue_ write _setvalue_; property szinfotitle index "szinfotitle" read _getvalue_ write _setvalue_; property dwinfoflags index "dwinfoflags" read _getvalue_ write _setvalue_; property guiditem index "guiditem" read _getvalue_ write _setvalue_; property hballoonicon index "hballoonicon" read _getvalue_ write _setvalue_; end type TtagSIZE=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( (0,"int",0), (1,"int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property cx index 0 read _getvalue_ write _setvalue_; property cy index 1 read _getvalue_ write _setvalue_; end type TCPoint=class(TtagSIZE) function create(p); begin inherited; end end type TCRect=class(tslcstructureobj) {** @explan(说明)矩形区域内存分配 %% **} private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( (0,"int",0), (1,"int",0), (2,"int",0), (3,"int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property left index 0 read _getvalue_ write _setvalue_; property top index 1 read _getvalue_ write _setvalue_; property right index 2 read _getvalue_ write _setvalue_; property bottom index 3 read _getvalue_ write _setvalue_; end type TCRectF=class(tslcstructureobj) private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( (0,"float",0), (1,"float",0), (2,"float",0), (3,"float",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property left index 0 read _getvalue_ write _setvalue_; property top index 1 read _getvalue_ write _setvalue_; property right index 2 read _getvalue_ write _setvalue_; property bottom index 3 read _getvalue_ write _setvalue_; end type TCPointF=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( (0,"float",0), (1,"float",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property cx index 0 read _getvalue_ write _setvalue_; property cy index 1 read _getvalue_ write _setvalue_; end type TCREATESTRUCT=class(tslcstructureobj) private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("lpcreateparams","intptr",0), ("hinstance","intptr",0), ("hmenu","intptr",0), ("hwndparent","intptr",0), ("cy","int",0), ("cx","int",0), ("y","int",0), ("x","int",0), ("style","int",0), ("lpszname","char*",100), ("lpszclass","char*",100), ("dwexstyle","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property lpcreateparams index "lpcreateparams" read _getvalue_ write _setvalue_; property hinstance index "hinstance" read _getvalue_ write _setvalue_; property hmenu index "hmenu" read _getvalue_ write _setvalue_; property hwndparent index "hwndparent" read _getvalue_ write _setvalue_; property cy index "cy" read _getvalue_ write _setvalue_; property cx index "cx" read _getvalue_ write _setvalue_; property y index "y" read _getvalue_ write _setvalue_; property x index "x" read _getvalue_ write _setvalue_; property style index "style" read _getvalue_ write _setvalue_; property lpszname index "lpszname" read _getvalue_ write _setvalue_; property lpszclass index "lpszclass" read _getvalue_ write _setvalue_; property dwexstyle index "dwexstyle" read _getvalue_ write _setvalue_; end type TScrollinfo = class(tslcstructureobj) //滚动条 private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate( array( ("cbsize","int",0), ("fmask","int",0), ("nmin","int",0), ("nmax","int",0), ("npage","int",0), ("npos","int",0), ("ntrackpos","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); cbsize := _size_(); end property cbsize:integer index "cbsize" read _getvalue_ write _setvalue_; property fmask:integer index "fmask" read _getvalue_ write _setvalue_; property nmin:integer index "nmin" read _getvalue_ write _setvalue_; property nmax:integer index "nmax" read _getvalue_ write _setvalue_; property npage:integer index "npage" read _getvalue_ write _setvalue_; property npos:integer index "npos" read _getvalue_ write _setvalue_; property ntrackpos:integer index "ntrackpos" read _getvalue_ write _setvalue_; end type TPAINTSTRUCT=class(tslcstructureobj) {** @expaln(说明)wm_paint消息结构体 %% **} private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hdc","intptr",0), ("ferase","int",0), ("rcpaint","int[4]", (0,0,0,0)), ("frestore","int",0), ("fincupdate","int",0), ("rgbreserved","byte[32]",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property hdc index "hdc" read _getvalue_; property ferase index "ferase" read _getvalue_; property rcpaint index "rcpaint" read _getvalue_; property frestore index "frestore" read _getvalue_; property fincupdate index "fincupdate" read _getvalue_; property rgbreserved index "rgbreserved" read _getvalue_; end type TBrowseinfoA=class(tcstructwithcharptr) {** @explan(说明)文件夹选择结构构造 %% **} private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hwndowner","intptr",0), ("pidlroot","intptr",0), ("pszdisplayname","intptr",0), ("lpsztitle","intptr",0), ("ulflags","int",0), ("lpfn","intptr",0), ("lparam","intptr",0), ("iimage","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),nil,array("lpsztitle":nil,"pszdisplayname":nil)); lpsztitle := 1024; pszdisplayname := 1024; end property hwndowner index "hwndowner" read _getvalue_ write _setvalue_; property pidlroot index "pidlroot" read _getvalue_ write _setvalue_; property pszdisplayname index "pszdisplayname" read _getvalue_ write _setvalue_; property lpsztitle index "lpsztitle" read _getvalue_ write _setvalue_; property ulflags index "ulflags" read _getvalue_ write _setvalue_; property lpfn index "lpfn" read _getvalue_ write _setvalue_; property lparam index "lparam" read _getvalue_ write _setvalue_; property iimage index "iimage" read _getvalue_ write _setvalue_; end type TBrowseinfoA_=class(tslcstructureobj) {** @explan(说明)文件夹选择结构读取 %% **} private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hwndowner","intptr",0), ("pidlroot","intptr",0), ("pszdisplayname","intptr",0), ("lpsztitle","intptr",0), ("ulflags","int",0), ("lpfn","intptr",0), ("lparam","intptr",0), ("iimage","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end end type TtagOFNA=class(tcstructwithcharptr) //字体构造 private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := array( ("lstructsize","int",152), ("hwndowner","intptr",0), ("hinstance","intptr",0), ("lpstrfilter","intptr",0), ("lpstrcustomfilter","intptr",0), ("nmaxcustfilter","int",0), ("nfilterindex","int",1), ("lpstrfile","char*",2049), ("nmaxfile","int",2048), ("lpstrfiletitle","char*",512), ("nmaxfiletitle","int",511), ("lpstrinitialdir","intptr",0), ("lpstrtitle","intptr",0), ("flags","int",0), //6148 ("nfileoffset","byte[2]",(0,0)), ("nfileextension","byte[2]",(0,0)), ("lpstrdefext","intptr",0), ("lcustdata","intptr",0), ("lpfnhook","intptr",0), ("lptemplatename","intptr",0), ("pvreserved","intptr",0), ("dwreserved","int",0), ("flagsex","int",0)); return SSTRUCT; end public function create() begin inherited create(getstruct(),array( "lpstrfiletitle":"nmaxfiletitle", "lpstrfile":"nmaxfile", "lpstrcustomfilter":"nmaxcustfilter", "lpstrtitle":nil, "lpstrdefext":nil),array( "lpstrfilter":nil )); lstructsize := _size_(); end property lstructsize index "lstructsize" read _getvalue_ write _setvalue_; property hwndowner index "hwndowner" read _getvalue_ write _setvalue_; property hinstance index "hinstance" read _getvalue_ write _setvalue_; property lpstrfilter index "lpstrfilter" read _getvalue_ write _setvalue_; property lpstrcustomfilter index "lpstrcustomfilter" read _getvalue_ write _setvalue_; property nmaxcustfilter index "nmaxcustfilter" read _getvalue_ write _setvalue_; property nfilterindex index "nfilterindex" read _getvalue_ write _setvalue_; property lpstrfile index "lpstrfile" read _getvalue_ write _setvalue_; property nmaxfile index "nmaxfile" read _getvalue_ write _setvalue_; property lpstrfiletitle index "lpstrfiletitle" read _getvalue_ write _setvalue_; property nmaxfiletitle index "nmaxfiletitle" read _getvalue_ write _setvalue_; property lpstrinitialdir index "lpstrinitialdir" read _getvalue_ write _setvalue_; property lpstrtitle index "lpstrtitle" read _getvalue_ write _setvalue_; property flags index "flags" read _getvalue_ write _setvalue_; property nfileoffset index "nfileoffset" read _getvalue_ write _setvalue_; property nfileextension index "nfileextension" read _getvalue_ write _setvalue_; property lpstrdefext index "lpstrdefext" read _getvalue_ write _setvalue_; property lcustdata index "lcustdata" read _getvalue_ write _setvalue_; property lpfnhook index "lpfnhook" read _getvalue_ write _setvalue_; property lptemplatename index "lptemplatename" read _getvalue_ write _setvalue_; property lpeditinfo index "lpeditinfo" read _getvalue_ write _setvalue_; property lpstrprompt index "lpstrprompt" read _getvalue_ write _setvalue_; property pvreserved index "pvreserved" read _getvalue_ write _setvalue_; property dwreserved index "dwreserved" read _getvalue_ write _setvalue_; property flagsex index "flagsex" read _getvalue_ write _setvalue_; end type TtagOFNA_ = class(tslcstructureobj) //字体读取 static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate( array( ("lstructsize","int",152), ("hwndowner","intptr",0), ("hinstance","intptr",0), ("lpstrfilter","intptr",0), ("lpstrcustomfilter","intptr",0), ("nmaxcustfilter","int",0), ("nfilterindex","int",1), ("lpstrfile","intptr",2049), ("nmaxfile","int",2048), ("lpstrfiletitle","intptr",512), ("nmaxfiletitle","int",511), ("lpstrinitialdir","intptr",0), ("lpstrtitle","intptr",0), ("flags","int",0), //6148 ("nfileoffset","byte[2]",(0,0)), ("nfileextension","byte[2]",(0,0)), ("lpstrdefext","intptr",0), ("lcustdata","intptr",0), ("lpfnhook","intptr",0), ("lptemplatename","intptr",0), ("pvreserved","intptr",0), ("dwreserved","int",0), ("flagsex","int",0))); //lpstrdefext return SSTRUCT; end function create(ptr) begin inherited create(getstruct(),ptr); end end type TSHBMP=class(tslcstructureobj) private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("bmtype","int",0), ("bmwidth","int",0), ("bmheight","int",0), ("bmwidthbytes","int",0), ("bmplanes","short",0), ("bmbitspixel","short",0), ("bmbits","intptr",0))); return SSTRUCT; end function getstruct2() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("bmtype","int",0), ("bmwidth","int",0), ("bmheight","int",0), ("bmwidthbytes","int",0), ("bmplanes","byte",0), ("bmbitspixel","byte",0), {$ifdef win64} ("nop1","byte[6]",array(0,0,0,0,0,0)), {$else} ("nop1","byte[2]",array(0,0)), {$endif} ("bmbits","intptr",100))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property bmtype index "bmtype" read _getvalue_ write _setvalue_; property bmwidth index "bmwidth" read _getvalue_ write _setvalue_; property bmheight index "bmheight" read _getvalue_ write _setvalue_; property bmwidthbytes index "bmwidthbytes" read _getvalue_ write _setvalue_; property bmplanes index "bmplanes" read _getvalue_ write _setvalue_; property bmbitspixel index "bmbitspixel" read _getvalue_ write _setvalue_; property nop1 index "nop1" read _getvalue_ write _setvalue_; property bmbits index "bmbits" read _getvalue_ write _setvalue_; {** @ignore(忽略) %% @param(bmwidth)(integer) 宽度%%; @param(bmheight)(integer) 高度%%; @param(bmwidthbytes)(integer) 行字节数%%; @param(bmplanes)(integer) 调色板位数%%; @param(bmbitspixel)(integer) 像素%%; **} end type TSHICON=class(tslcstructureobj) private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("ficon","int",0), ("xhotspot","int",0), ("yhotspot","int",0), ("hbmmask","intptr",0), ("hbmcolor","intptr",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property ficon index "ficon" read _getvalue_ write _setvalue_; property xhotspot index "xhotspot" read _getvalue_ write _setvalue_; property yhotspot index "yhotspot" read _getvalue_ write _setvalue_; property hbmmask index "hbmmask" read _getvalue_ write _setvalue_; property hbmcolor index "hbmcolor" read _getvalue_ write _setvalue_; end type ttagCHOOSECOLORA=class(tslcstructureobj) {** @explan(说明) 颜色选择结构体类 %% **} private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("lstructsize","int",0), ("hwndowner","intptr",0), ("hinstance","intptr",0), ("rgbresult","int",0), ("lpcustcolors","user*",array((0,"int[16]",array(0)))), ("flags","int",0), ("lcustdata","intptr",0), ("lpfnhook","intptr",0), ("lptemplatename","char*",100))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); lstructsize := _size_(); end property lstructsize index "lstructsize" read _getvalue_ write _setvalue_; property hwndowner index "hwndowner" read _getvalue_ write _setvalue_; property hinstance index "hinstance" read _getvalue_ write _setvalue_; property rgbresult index "rgbresult" read _getvalue_ write _setvalue_; property lpcustcolors index "lpcustcolors" read _getvalue_ write _setvalue_; property flags index "flags" read _getvalue_ write _setvalue_; property lcustdata index "lcustdata" read _getvalue_ write _setvalue_; property lpfnhook index "lpfnhook" read _getvalue_ write _setvalue_; property lptemplatename index "lptemplatename" read _getvalue_ write _setvalue_; end type ttagCHOOSEFONTA=class(tslcstructureobj) {** @explan(说明)字体选择结构体 %% **} private static SSTRUCT; Flogfont; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("lstructsize","int",0), ("hwndowner","intptr",0), ("hdc","intptr",0), ("lplogfont","intptr",0), ("ipointsize","int",0), ("flags","int",0), ("rgbcolors","int",0), ("lcustdata","intptr",0), ("lpfnhook","intptr",0), ("lptemplatename","char*",100), ("hinstance","intptr",0), ("lpszstyle","intptr",100), ("nfonttype","short",0), ("___missing_alignment__","short",0), ("nsizemin","int",0), ("nsizemax","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); lg := inherited _getvalue_("lplogfont"); Flogfont := new ttagLOGFONTA(lg ?: nil); lplogfont := Flogfont._getptr_; lstructsize := _size_(); end function _getvalue_(id);override; begin if id="lplogfont" then begin return new ttagLOGFONTA(inherited); end else return inherited; end function _setvalue_(id,v);override; begin if id="lplogfont" and ifnumber(v)and v then begin inherited _setvalue_(id,v); end else if v is class(ttagLOGFONTA)then begin inherited _setvalue_(id,v._getptr_); end else inherited; end function SetFontInfo(v); begin if ifarray(v)then begin for i,vi in v do begin Flogfont._setvalue_(i,vi); end end end property lstructsize index "lstructsize" read _getvalue_ write _setvalue_; property hwndowner index "hwndowner" read _getvalue_ write _setvalue_; property hdc index "hdc" read _getvalue_ write _setvalue_; property lplogfont index "lplogfont" read _getvalue_ write _setvalue_; property ipointsize index "ipointsize" read _getvalue_ write _setvalue_; property flags index "flags" read _getvalue_ write _setvalue_; property rgbcolors index "rgbcolors" read _getvalue_ write _setvalue_; property lcustdata index "lcustdata" read _getvalue_ write _setvalue_; property lpfnhook index "lpfnhook" read _getvalue_ write _setvalue_; property lptemplatename index "lptemplatename" read _getvalue_ write _setvalue_; property hinstance index "hinstance" read _getvalue_ write _setvalue_; property lpszstyle index "lpszstyle" read _getvalue_ write _setvalue_; property nfonttype index "nfonttype" read _getvalue_ write _setvalue_; //property ___missing_alignment__ index "___missing_alignment__" read _getvalue_ write _setvalue_; property nsizemin index "nsizemin" read _getvalue_ write _setvalue_; property nsizemax index "nsizemax" read _getvalue_ write _setvalue_; end type ttagLOGFONTA=class(tslcstructureobj) {** @explan(说明) 逻辑字体对象结构表示 %% **} private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("height","int",15), ("width","int",0), ("escapement","int",0), ("orientation","int",0), ("weight","int",400), ("italic","byte",0), ("underline","byte",0), ("strikeout","byte",0), ("charset","byte",134), ("outprecision","byte",3), ("clipprecision","byte",2), ("quality","byte",1), ("pitchandfamily","byte",FIXED_PITCH), ("facename","char[32]","新宋体"))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property height index "height" read _getvalue_ write _setvalue_; property width index "width" read _getvalue_ write _setvalue_; property escapement index "escapement" read _getvalue_ write _setvalue_; property orientation index "orientation" read _getvalue_ write _setvalue_; property weight index "weight" read _getvalue_ write _setvalue_; property italic index "italic" read _getvalue_ write _setvalue_; property underline index "underline" read _getvalue_ write _setvalue_; property strikeout index "strikeout" read _getvalue_ write _setvalue_; property charset index "charset" read _getvalue_ write _setvalue_; property outprecision index "outprecision" read _getvalue_ write _setvalue_; property clipprecision index "clipprecision" read _getvalue_ write _setvalue_; property quality index "quality" read _getvalue_ write _setvalue_; property pitchandfamily index "pitchandfamily" read _getvalue_ write _setvalue_; property facename index "facename" read _getvalue_ write _setvalue_; end type ttagTEXTMETRICA=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("tmheight","int",0), ("tmascent","int",0), ("tmdescent","int",0), ("tminternalleading","int",0), ("tmexternalleading","int",0), ("tmavecharwidth","int",0), ("tmmaxcharwidth","int",0), ("tmweight","int",0), ("tmoverhang","int",0), ("tmdigitizedaspectx","int",0), ("tmdigitizedaspecty","int",0), ("tmfirstchar","byte",0), ("tmlastchar","byte",0), ("tmdefaultchar","byte",0), ("tmbreakchar","byte",0), ("tmitalic","byte",0), ("tmunderlined","byte",0), ("tmstruckout","byte",0), ("tmpitchandfamily","byte",0), ("tmcharset","byte",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property tmheight index "tmheight" read _getvalue_ write _setvalue_; property tmascent index "tmascent" read _getvalue_ write _setvalue_; property tmdescent index "tmdescent" read _getvalue_ write _setvalue_; property tminternalleading index "tminternalleading" read _getvalue_ write _setvalue_; property tmexternalleading index "tmexternalleading" read _getvalue_ write _setvalue_; property tmavecharwidth index "tmavecharwidth" read _getvalue_ write _setvalue_; property tmmaxcharwidth index "tmmaxcharwidth" read _getvalue_ write _setvalue_; property tmweight index "tmweight" read _getvalue_ write _setvalue_; property tmoverhang index "tmoverhang" read _getvalue_ write _setvalue_; property tmdigitizedaspectx index "tmdigitizedaspectx" read _getvalue_ write _setvalue_; property tmdigitizedaspecty index "tmdigitizedaspecty" read _getvalue_ write _setvalue_; property tmfirstchar index "tmfirstchar" read _getvalue_ write _setvalue_; property tmlastchar index "tmlastchar" read _getvalue_ write _setvalue_; property tmdefaultchar index "tmdefaultchar" read _getvalue_ write _setvalue_; property tmbreakchar index "tmbreakchar" read _getvalue_ write _setvalue_; property tmitalic index "tmitalic" read _getvalue_ write _setvalue_; property tmunderlined index "tmunderlined" read _getvalue_ write _setvalue_; property tmstruckout index "tmstruckout" read _getvalue_ write _setvalue_; property tmpitchandfamily index "tmpitchandfamily" read _getvalue_ write _setvalue_; property tmcharset index "tmcharset" read _getvalue_ write _setvalue_; end type Ttagdrawtextparams=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array(("cbsize","int",0) ,("itablength","int",4) ,("ileftmargin","int",0) ,("irightmargin","int",0) ,("uilengthdrawn","int",0) )); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); cbsize := _size_(); end property cbsize index "cbsize" read _getvalue_ write _setvalue_; property itablength index "itablength" read _getvalue_ write _setvalue_; property ileftmargin index "ileftmargin" read _getvalue_ write _setvalue_; property irightmargin index "irightmargin" read _getvalue_ write _setvalue_; property uilengthdrawn index "uilengthdrawn" read _getvalue_ write _setvalue_; end type TSTYLESTRUCT = class(tslcstructureobj) //样式相关 private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate( array( ("styleold","int",0), ("stylenew","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property styleold index "styleold" read _getvalue_ write _setvalue_ ; property stylenew index "stylenew" read _getvalue_ write _setvalue_ ; end type tvclwindowpos_class= class(tslcstructureobj) //窗口位置信息 private static SSTRUCT; function getstruct(); begin if not SSTRUCT then begin SSTRUCT := MemoryAlignmentCalculate( array(("hwndinsertafter","intptr",0), ("hwnd","intptr",0), ("x","int",0), ("y","int",0), ("cx","int",0), ("cy","int",0), ("flags","int",0))); end return SSTRUCT; end public function create(ptr);override; begin inherited create(getstruct(),ptr); end property x:integer index "x" read _getvalue_ write _setvalue_; property y:integer index "y" read _getvalue_ write _setvalue_; property cx:integer index "cx" read _getvalue_ write _setvalue_; property cy:integer index "cy" read _getvalue_ write _setvalue_; property flags:integer index "flags" read _getvalue_ write _setvalue_; property hwndinsertafter:integer index "hwndinsertafter" read _getvalue_ write _setvalue_; property hwnd:integer index "hwnd" read _getvalue_ write _setvalue_; end type TNMHDR=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hwndfrom","intptr",0), ("idfrom","intptr",0), ("code","int",0))); return SSTRUCT; end public class function memsize(); begin if not SSTRUCT then getstruct(); if SSTRUCT then begin ldata := length(SSTRUCT)-1; return SSTRUCT[ldata,3]+SSTRUCT[ldata,4]-SSTRUCT[0,3]; end return 0; end function create(ptr) begin inherited create(getstruct(),ptr); end property hwndfrom index "hwndfrom" read _getvalue_ write _setvalue_; property idfrom index "idfrom" read _getvalue_ write _setvalue_; property code index "code" read _getvalue_ write _setvalue_; end type TWINDOWINFO=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("cbsize","int",0), ("rcwindow","int[4]", (0,0,0,0)), ("rcclient","int[4]", (0,0,0,0)), ("dwstyle","int",0), ("dwexstyle","int",0), ("dwwindowstatus","int",0), ("cxwindowborders","int",0), ("cywindowborders","int",0), ("atomwindowtype","byte[2]",(0,0)), ("wcreatorversion","short",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property cbsize index "cbsize" read _getvalue_ write _setvalue_; property rcwindow index "rcwindow" read _getvalue_ write _setvalue_; property rcclient index "rcclient" read _getvalue_ write _setvalue_; property dwstyle index "dwstyle" read _getvalue_ write _setvalue_; property dwexstyle index "dwexstyle" read _getvalue_ write _setvalue_; property dwwindowstatus index "dwwindowstatus" read _getvalue_ write _setvalue_; property cxwindowborders index "cxwindowborders" read _getvalue_ write _setvalue_; property cywindowborders index "cywindowborders" read _getvalue_ write _setvalue_; property atomwindowtype index "atomwindowtype" read _getvalue_ write _setvalue_; property wcreatorversion index "wcreatorversion" read _getvalue_ write _setvalue_; end type TCHECK_RESULT=class(tslcstructureobj) private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("errline","int",0), ("errmsg","char[4096]",0) )); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property errline index "errline" read _getvalue_ write _setvalue_; property errmsg index "errmsg" read _getvalue_ write _setvalue_; end type TNMMOUSE=class(tslcstructureobj) private static SSTRUCT; function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hdr","user",array( ("hwndfrom","intptr",0), ("idfrom","intptr",0), ("code","int",0))), ("dwitemspec","intptr",0), ("dwitemdata","intptr",0), ("pt","int[2]", (0,0)), ("dwhitinfo","intptr",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property hdr index "hdr" read _getvalue_ write _setvalue_; property dwitemspec index "dwitemspec" read _getvalue_ write _setvalue_; property dwitemdata index "dwitemdata" read _getvalue_ write _setvalue_; property pt index "pt" read _getvalue_ write _setvalue_; property dwhitinfo index "dwhitinfo" read _getvalue_ write _setvalue_; end type Ttagminmaxinfo=class(tslcstructureobj) //窗口大小相关 private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("ptreserved","int[2]", (0,0)), ("ptmaxsize","int[2]", (0,0)), ("ptmaxposition","int[2]", (0,0)), ("ptmintracksize","int[2]", (0,0)), ("ptmaxtracksize","int[2]", (0,0)))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property ptreserved index "ptreserved" read _getvalue_ write _setvalue_; property ptmaxsize index "ptmaxsize" read _getvalue_ write _setvalue_; property ptmaxposition index "ptmaxposition" read _getvalue_ write _setvalue_; property ptmintracksize index "ptmintracksize" read _getvalue_ write _setvalue_; property ptmaxtracksize index "ptmaxtracksize" read _getvalue_ write _setvalue_; end /////////////////////////////////////////////////////////////// type tagWNDCLASSA=class(tslcstructureobj) // 窗口类对象 %% static classstruct; class function getstruct(); begin if not classstruct then begin classstruct := MemoryAlignmentCalculate(array( ("cbsize","int",0), ("style","int",0), ("lpfnwndproc","intptr",0), ("cbclsextra","int",0), ("cbwndextra","int",0), ("hinstance","intptr",0), ("hicon","intptr",0), ("hcursor","intptr",0), ("hbrbackground","intptr",0), ("lpszmenuname","intptr",0), //("lpszmenuname","char*",100), ("lpszclassname","char*",100), ("hiconsm","intptr",0))); end return classstruct; end function create(ptr); begin class(tslcstructureobj).create(getstruct(),ptr); _setvalue_("cbsize",_size_()); end property style:integer index "style" read _getvalue_ write _setvalue_; property cbsize:integer index "cbsize" read _getvalue_ write _setvalue_; property lpfnwndproc:pointer index "lpfnwndproc" read _getvalue_ write _setvalue_; property cbclsextra:integer index "cbclsextra" read _getvalue_ write _setvalue_; property cbwndextra:integer index "cbwndextra" read _getvalue_ write _setvalue_; property hinstance:pointer index "hinstance" read _getvalue_ write _setvalue_; property cbwndextra:integer index "cbwndextra" read _getvalue_ write _setvalue_; property hicon:pointer index "hicon" read _getvalue_ write _setvalue_; property hcursor:pointer index "hcursor" read _getvalue_ write _setvalue_; property lpszmenuname:pointer index "lpszmenuname" read _getvalue_ write _setvalue_; property hbrbackground:pointer index "hbrbackground" read _getvalue_ write _setvalue_; property lpszclassname:string index "lpszclassname" read _getvalue_ write _setvalue_; property hiconsm:pointer index "hiconsm" read _getvalue_ write _setvalue_; end /////////////////////////////windows进程相关结构体////////// type T_startupinfoa=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("cb","int",0), ("lpreserved","intptr",0), ("lpdesktop","intptr",0), ("lptitle","intptr",0), ("dwx","int",0), ("dwy","int",0), ("dwxsize","int",0), ("dwysize","int",0), ("dwxcountchars","int",0), ("dwycountchars","int",0), ("dwfillattribute","int",0), ("dwflags","int",0), ("wshowwindow","short",0), ("cbreserved2","short",0), ("lpreserved2","intptr",0), ("hstdinput","intptr",0), ("hstdoutput","intptr",0), ("hstderror","intptr",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); cb := _size_(); end property cb index "cb" read _getvalue_ write _setvalue_; property lpreserved index "lpreserved" read _getvalue_ write _setvalue_; property lpdesktop index "lpdesktop" read _getvalue_ write _setvalue_; property lptitle index "lptitle" read _getvalue_ write _setvalue_; property dwx index "dwx" read _getvalue_ write _setvalue_; property dwy index "dwy" read _getvalue_ write _setvalue_; property dwxsize index "dwxsize" read _getvalue_ write _setvalue_; property dwysize index "dwysize" read _getvalue_ write _setvalue_; property dwxcountchars index "dwxcountchars" read _getvalue_ write _setvalue_; property dwycountchars index "dwycountchars" read _getvalue_ write _setvalue_; property dwfillattribute index "dwfillattribute" read _getvalue_ write _setvalue_; property dwflags index "dwflags" read _getvalue_ write _setvalue_; property wshowwindow index "wshowwindow" read _getvalue_ write _setvalue_; property cbreserved2 index "cbreserved2" read _getvalue_ write _setvalue_; property lpreserved2 index "lpreserved2" read _getvalue_ write _setvalue_; property hstdinput index "hstdinput" read _getvalue_ write _setvalue_; property hstdoutput index "hstdoutput" read _getvalue_ write _setvalue_; property hstderror index "hstderror" read _getvalue_ write _setvalue_; end type T_process_information=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hprocess","intptr",0), ("hthread","intptr",0), ("dwprocessid","int",0), ("dwthreadid","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property hprocess index "hprocess" read _getvalue_ write _setvalue_; property hthread index "hthread" read _getvalue_ write _setvalue_; property dwprocessid index "dwprocessid" read _getvalue_ write _setvalue_; property dwthreadid index "dwthreadid" read _getvalue_ write _setvalue_; end type T_security_attributes=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("nlength","int",0), ("lpsecuritydescriptor","intptr",0), ("binherithandle","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); nlength := _size_(); end property nlength index "nlength" read _getvalue_ write _setvalue_; property lpsecuritydescriptor index "lpsecuritydescriptor" read _getvalue_ write _setvalue_; property binherithandle index "binherithandle" read _getvalue_ write _setvalue_; end type TCreateParams=class() {** @explan(说明) 窗口控件构造参数对象 %% **} {** @ignore(忽略) **} private FParams; public {** @param(Caption)(string) 控件标题 %% @param(Style)(integer) 控件样式 %% @param(ExStyle)(integer) 控件扩展样式 %% @param(winclass)() 窗口类样式 %% **} Caption:string; Style:integer; ExStyle:integer; X,Y:Integer; CreateWithSubClass; Width,Height:Integer; WndParent:HWnd; Param:Pointer; winclass:tagWNDCLASSA; subclass:tagWNDCLASSA; WinClassName:string; {** @param(tagWNDCLASSA)() 依赖标准控件基类 %% @param(WinClassName)() 窗口类名称 %% @param(SubClassName)() 依赖窗口基类名称 %% @param(subclasswndproc)() 依赖窗口基类消息函数 %% @param(Winclasswndproc)() 窗口类消息函数 %% @param(cstyle)(integer) 窗口类样式 %% @param(id)(integer) 窗口id 自动分配 %% @param(happ)(pointer) 进程句柄 自动分配 %% **} SubClassName:string; subclasswndproc:pointer; Winclasswndproc:pointer; id; cstyle; //cbrush; happ; public function create(); begin FParams := array(); Caption := ""; Style := 0; ExStyle := 0; id := x := y := 0; Width := Height := 0; WndParent := 0; Param := 0; WinClassName := 0; SubClassName := 0; WinClassName := "tsui_window"; subclasswndproc := 0; Winclasswndproc := 0; winclass := new tagWNDCLASSA(); subclass := new tagWNDCLASSA(); cbsize := winclass._size_(); winclass._setvalue_("cbsize",cbsize); subclass._setvalue_("cbsize",cbsize); cstyle := 0; end function operator[](index); begin if ifstring(index)then begin nindex := lowercase(index); try return invoke(self(true),nindex); except return FParams[nindex]; end end else return FParams[index]; end function operator[1](index,value); begin if ifstring(index)then begin nindex := lowercase(index); try invoke(self(true),index,1,value); except FParams[nindex]:= value; end end else FParams[index]:= value; end end ////////////////////////socket 结构体//////////////////////////////////// type TSockaddr=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("sa_family","short",0), ("sa_data","char[14]",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property sa_family index "sa_family" read _getvalue_ write _setvalue_; property sa_data index "sa_data" read _getvalue_ write _setvalue_; end type TSockaddr_in=class(tslcstructureobj) private static SSTRUCT; FOpr; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("sin_family","short",0), ("sin_port","short",0), ("sin_addr","int",0), ("sin_zero","char[8]",0))); return SSTRUCT; end function writeIntShortN(n,V); begin if not(n >= 0 and n <= 1)then exit; nv := sin_addr; bs := FOpr.IntToShorts(nv); bs[n]:= v; sin_addr := FOpr.ShortsToInt(bs); end function writeIntByteN(n,V); begin if not(n >= 0 and n <= 3)then exit; nv := sin_addr; bs := FOpr.IntAsBytes(nv); bs[n]:= v; sin_addr := FOpr.bytesasint(bs); end function ReadIntShortN(N); begin if not(n >= 0 and n <= 1)then exit; nv := sin_addr; bs := FOpr.IntToShorts(nv); return bs[n]; end function ReadIntByteN(N); begin if not(n >= 0 and n <= 3)then exit; nv := sin_addr; bs := FOpr.IntAsBytes(nv); return bs[n]; end public function create(ptr) begin inherited create(getstruct(),ptr); FOpr := new TByteDataOP(); end property s_b1 index 0 read ReadIntByteN write writeIntByteN; property s_b2 index 1 read ReadIntByteN write writeIntByteN; property s_b3 index 2 read ReadIntByteN write writeIntByteN; property s_b4 index 3 read ReadIntByteN write writeIntByteN; property s_w1 index 0 read ReadIntShortN write writeIntShortN; property s_w2 index 1 read ReadIntShortN write writeIntShortN; property sin_family index "sin_family" read _getvalue_ write _setvalue_; property sin_port index "sin_port" read _getvalue_ write _setvalue_; property sin_addr index "sin_addr" read _getvalue_ write _setvalue_; property sin_zero index "sin_zero" read _getvalue_ write _setvalue_; end type TSockaddr_in6=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("sin6_family","short",0), ("sin6_port","short",0), ("sin6_flowinfo","long",0), ("sin6_addr","byte[16]",array()), //union byte16 short8 ("sin6_scope_id","long",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property sin6_family index "sin6_family" read _getvalue_ write _setvalue_; property sin6_port index "sin6_port" read _getvalue_ write _setvalue_; property sin6_flowinfo index "sin6_flowinfo" read _getvalue_ write _setvalue_; property sin6_addr index "sin6_addr" read _getvalue_ write _setvalue_; property sin6_scope_id index "sin6_scope_id" read _getvalue_ write _setvalue_; end type TWSADATA=class(tslcstructureobj) //有点不理解 private static SSTRUCT; class function getstruct() begin if not SSTRUCT then {$IFDEF win64} SSTRUCT := MemoryAlignmentCalculate(array( ("wversion","short",0), ("whighversion","short",0), ("imaxsockets","short",0), ("imaxudpdg","short",0), ("lpvendorinfo","char*",100), ("szdescription","char[257]",0), ("szsystemstatus","char[129]",0))); {$ELSE} SSTRUCT := MemoryAlignmentCalculate(array( ("wversion","short",0), ("whighversion","short",0), ("szdescription","char[157]",0), ("szsystemstatus","char[129]",0), ("imaxsockets","short",0), ("imaxudpdg","short",0), ("lpvendorinfo","char*",100))); {$ENDIF} return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property wversion index "wversion" read _getvalue_ write _setvalue_; property whighversion index "whighversion" read _getvalue_ write _setvalue_; property imaxsockets index "imaxsockets" read _getvalue_ write _setvalue_; property imaxudpdg index "imaxudpdg" read _getvalue_ write _setvalue_; property lpvendorinfo index "lpvendorinfo" read _getvalue_ write _setvalue_; property szdescription index "szdescription" read _getvalue_ write _setvalue_; property szsystemstatus index "szsystemstatus" read _getvalue_ write _setvalue_; end type Ttagprocessentry32=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array(("dwsize","int",0) ,("cntusage","int",0) ,("th32processid","int",0) ,("th32defaultheapid","intptr",0) ,("th32moduleid","int",0) ,("cntthreads","int",0) ,("th32parentprocessid","int",0) ,("pcpriclassbase","int",0) ,("dwflags","int",0) ,("szexefile","char[260]",0) )); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); dwsize := _size_(); end property dwsize index "dwsize" read _getvalue_ write _setvalue_; property cntusage index "cntusage" read _getvalue_ write _setvalue_; property th32processid index "th32processid" read _getvalue_ write _setvalue_; property th32defaultheapid index "th32defaultheapid" read _getvalue_ write _setvalue_; property th32moduleid index "th32moduleid" read _getvalue_ write _setvalue_; property cntthreads index "cntthreads" read _getvalue_ write _setvalue_; property th32parentprocessid index "th32parentprocessid" read _getvalue_ write _setvalue_; property pcpriclassbase index "pcpriclassbase" read _getvalue_ write _setvalue_; property dwflags index "dwflags" read _getvalue_ write _setvalue_; property szexefile index "szexefile" read _getvalue_ write _setvalue_; end type Ttagmoduleentry32=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array(("dwsize","int",0) ,("th32moduleid","int",0) ,("th32processid","int",0) ,("glblcntusage","int",0) ,("proccntusage","int",0) ,("modbaseaddr","intptr",0) ,("modbasesize","int",0) ,("hmodule","intptr",0) ,("szmodule","char[256]",0) ,("szexepath","char[260]",0) )); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); dwsize := _size_(); end property dwsize index "dwsize" read _getvalue_ write _setvalue_; property th32moduleid index "th32moduleid" read _getvalue_ write _setvalue_; property th32processid index "th32processid" read _getvalue_ write _setvalue_; property glblcntusage index "glblcntusage" read _getvalue_ write _setvalue_; property proccntusage index "proccntusage" read _getvalue_ write _setvalue_; property modbaseaddr index "modbaseaddr" read _getvalue_ write _setvalue_; property modbasesize index "modbasesize" read _getvalue_ write _setvalue_; property hmodule index "hmodule" read _getvalue_ write _setvalue_; property szmodule index "szmodule" read _getvalue_ write _setvalue_; property szexepath index "szexepath" read _getvalue_ write _setvalue_; end type tagCOMPOSITIONFORM=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("dwstyle","int",4), ("ptcurrentpos","intptr",0), ("rcarea","int[4]",array(0,0,0,0))),nil,nil,1); return SSTRUCT; end public function create() begin inherited create(getstruct(),ptr); FPonter := new TCPoint(); _setvalue_("ptcurrentpos",FPonter._getptr_()); end property dwstyle index "dwstyle" read _getvalue_ write _setvalue_; property ptcurrentpos read FPonter; property rcarea index "rcarea" read _getvalue_ write _setvalue_; private FPonter; end type Ttagxform=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( (0,"float",0), (1,"float",0), (2,"float",0), (3,"float",0), (4,"float",0), (5,"float",0) ) ); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property eM11 index 0 read _getvalue_ write _setvalue_; property eM12 index 1 read _getvalue_ write _setvalue_; property eM21 index 2 read _getvalue_ write _setvalue_; property eM22 index 3 read _getvalue_ write _setvalue_; property edx index 4 read _getvalue_ write _setvalue_; property edy index 5 read _getvalue_ write _setvalue_; end type TMONITORINFO=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("cbsize","int",0), ("rcmonitor","int[4]", (0,0,0,0)), ("rcwork","int[4]", (0,0,0,0)), ("dwflags","int",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); cbsize := _size_(); end property cbsize index "cbsize" read _getvalue_ write _setvalue_; property rcmonitor index "rcmonitor" read _getvalue_ write _setvalue_; property rcwork index "rcwork" read _getvalue_ write _setvalue_; property dwflags index "dwflags" read _getvalue_ write _setvalue_; end implementation (* //工具栏,状态栏 type ttagNMCUSTOMDRAWINFO=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hdr","user", ( ("hwndfrom","intptr",0), ("idfrom","intptr",0), ("code","int",0))), ("dwdrawstage","int",0), ("hdc","intptr",0), ("rc","int[4]", (0,0,0,0)), ("dwitemspec","intptr",0), ("uitemstate","int",0), ("litemlparam","intptr",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end property hdr index "hdr" read _getvalue_ write _setvalue_; property dwdrawstage index "dwdrawstage" read _getvalue_ write _setvalue_; property hdc index "hdc" read _getvalue_ write _setvalue_; property rc index "rc" read _getvalue_ write _setvalue_; property dwitemspec index "dwitemspec" read _getvalue_ write _setvalue_; property uitemstate index "uitemstate" read _getvalue_ write _setvalue_; property litemlparam index "litemlparam" read _getvalue_ write _setvalue_; end *) {type ttagNMLISTVIEW=class(tslcstructureobj) private static SSTRUCT; class function getstruct() begin if not SSTRUCT then SSTRUCT := MemoryAlignmentCalculate(array( ("hdr","user", ( ("hwndfrom","intptr",0), ("idfrom","intptr",0), ("code","int",0))), ("iitem","int",0), ("isubitem","int",0), ("unewstate","int",0), ("uoldstate","int",0), ("uchanged","int",0), ("ptaction","int[2]", (0,0)), ("lparam","intptr",0))); return SSTRUCT; end public function create(ptr) begin inherited create(getstruct(),ptr); end end} initialization end.