Define Class TvItemStructure As Exception Address = 0 SizeOf = 40 Name = "TVITEM" && structure fields mask = .F. hItem = .F. state = .F. stateMask = .F. pszText = .F. cchTextMax = .F. iImage = .F. iSelectedImage = .F. cChildren = .F. Lparam = .F. Procedure Init(lnAddress) This.Address = m.lnAddress Endproc Procedure mask_Access() Return ReadUInt(This.Address) Endproc Procedure mask_Assign(lnNewVal) WriteUInt(This.Address, m.lnNewVal) Endproc Procedure hItem_Access() Return ReadUInt(This.Address + 4) Endproc Procedure hItem_Assign(lnNewVal) WriteUInt(This.Address + 4, m.lnNewVal) Endproc Procedure state_Access() Return ReadUInt(This.Address + 8) Endproc Procedure state_Assign(lnNewVal) WriteUInt(This.Address + 8, m.lnNewVal) Endproc Procedure stateMask_Access() Return ReadUInt(This.Address + 12) Endproc Procedure stateMask_Assign(lnNewVal) WriteUInt(This.Address + 12, m.lnNewVal) Endproc Procedure pszText_Access() Return ReadPCString(This.Address + 16) Endproc Procedure pszText_Assign(lnNewVal) WritePCString(This.Address + 16, m.lnNewVal) Endproc Procedure cchTextMax_Access() Return ReadInt(This.Address + 20) Endproc Procedure cchTextMax_Assign(lnNewVal) WriteInt(This.Address + 20, m.lnNewVal) Endproc Procedure iImage_Access() Return ReadInt(This.Address + 24) Endproc Procedure iImage_Assign(lnNewVal) WriteInt(This.Address + 24, m.lnNewVal) Endproc Procedure iSelectedImage_Access() Return ReadInt(This.Address + 28) Endproc Procedure iSelectedImage_Assign(lnNewVal) WriteInt(This.Address + 28, m.lnNewVal) Endproc Procedure cChildren_Access() Return ReadInt(This.Address + 32) Endproc Procedure cChildren_Assign(lnNewVal) WriteInt(This.Address + 32, m.lnNewVal) Endproc Procedure lParam_Access() Return ReadInt(This.Address + 36) Endproc Procedure lParam_Assign(lnNewVal) WriteInt(This.Address + 36, m.lnNewVal) Endproc Enddefine Define Class TvInsertStructure As Exception Address = 0 SizeOf = 48 Name = "TVINSERTSTRUCT" && structure fields hParent = .F. hInsertAfter = .F. Item = .Null. Procedure Init() This.Address = AllocMem(This.SizeOf) This.Item = Createobject('TvItemStructure',This.Address + 8) Endproc Procedure Destroy() FreeMem(This.Address) Endproc Procedure Address_Assign(lnAddress) Do Case Case This.Address = 0 This.Address = m.lnAddress Case This.Address = m.lnAddress Otherwise This.Address = m.lnAddress This.Item.Address = m.lnAddress + 8 Endcase Endproc Procedure hParent_Access() Return ReadUInt(This.Address) Endproc Procedure hParent_Assign(lnNewVal) WriteUInt(This.Address, m.lnNewVal) Endproc Procedure hInsertAfter_Access() Return ReadUInt(This.Address + 4) Endproc Procedure hInsertAfter_Assign(lnNewVal) WriteUInt(This.Address + 4, m.lnNewVal) Endproc EnddefineThanks Rick for your support!!!