Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Create a Struct in VFP using VFP2C32
Message
From
01/10/2014 12:38:35
Emerson Reed
Folhamatic Tecnologia Em Sistemas
Americana - São Paulo, Brazil
 
 
To
24/09/2014 08:38:39
Emerson Reed
Folhamatic Tecnologia Em Sistemas
Americana - São Paulo, Brazil
General information
Forum:
Visual FoxPro
Category:
Third party products
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows 7
Network:
Windows 2003 Server
Database:
Visual FoxPro
Application:
Desktop
Miscellaneous
Thread ID:
01608148
Message ID:
01608620
Views:
142
Likes (1)
Hi folks.
With valuable help from Rick C. Hodgin, I was able to parse the structures using VFP2C32:
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
Enddefine
Thanks Rick for your support!!!
Emerson Santon Reed
"One Developer CAN Make a Difference. A community CAN make a future." - Craig Boyd
Previous
Reply
Map
View

Click here to load this message in the networking platform