I am trying to learn about PB9 objects and in working with the OBJPTR function, I have run into some problems. The code below utilizes the CALL DWORD command, and it seems to work nicely with METHODS but not with PROPERTY routines. I haven't found anything in the help that prohibits such use, so I was wondering if I am just using them incorrectly. By the way, I have learned a lot from Fred Harris' related code in this forum.
Code:
#COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" DECLARE FUNCTION getX() AS LONG DECLARE SUB setX(BYVAL LONG) DECLARE SUB showX() CLASS cXX INSTANCE x AS LONG INTERFACE iXX '--------------------------------------------------------------------- INHERIT IUNKNOWN PROPERTY GET getX() AS LONG 'VFT(3) PROPERTY = x END PROPERTY PROPERTY SET setX(BYVAL n AS LONG) 'VFT(4) MSGBOX "setX() " + STR$(n) x = n END PROPERTY METHOD showX() 'VFT(5) MSGBOX "showX(): " + STR$(x) END METHOD END INTERFACE END CLASS FUNCTION PBMAIN LOCAL m, n AS LONG LOCAL oX AS iXX LOCAL pVFT, VFT AS DWORD PTR ox = CLASS "cXX" ox.setX = 20 ox.showX MSGBOX "getX() " + STR$(ox.getX) pVFT = OBJPTR(ox) VFT = @pVFT CALL DWORD @VFT[5] USING showX() CALL DWORD @VFT[4] USING setX(30) CALL DWORD @VFT[3] USING getX() TO n MSGBOX "returned from getX(): " + STR$(n) END FUNCTION
Comment