ID3DXAnimationCallbackHandler Interface

 

 

' ****************************************************************************************
' ID3DXAnimationCallbackHandler Interface
' ****************************************************************************************

' ****************************************************************************************
' An application implements this interface to handle callbacks in animation sets generated
' by calls to ID3DXAnimationController::AdvanceTime.
' Interface Information
'    Stock Implementation   d3d9.dll
'    Custom Implementation  No
'    Inherits from  IUnknown
'    Header     d3dx9anim.h
'    Import library     d3dx9.lib
'    Minimum operating systems  Windows 98
' ****************************************************************************************

' ****************************************************************************************
'DECLARE_INTERFACE(ID3DXAnimationCallbackHandler)
'{
'    //----------------------------------------------------------------------------
'    // ID3DXAnimationCallbackHandler::HandleCallback:
'    // ----------------------------------------------
'    // This method gets called when a callback occurs for an animation set in one
'    // of the tracks during the ID3DXAnimationController::AdvanceTime() call.
'    //
'    // Parameters:
'    //  Track
'    //      Index of the track on which the callback occured.
'    //  pCallbackData
'    //      Pointer to user owned callback data.
'    //
'    //----------------------------------------------------------------------------
'    STDMETHOD(HandleCallback)(THIS_ UINT Track, LPVOID pCallbackData) PURE;
'};
' ****************************************************************************************

' ****************************************************************************************
' IUnknown virtual table
' ****************************************************************************************
TYPE ID3DXAnimationCallbackHandler_IUnknownVtbl
   ' IUnknown interface
   QueryInterface AS DWORD           ' Returns pointers to supported interfaces
   AddRef AS DWORD                   ' Increments reference count
   Release AS DWORD                  ' Decrements reference count
   ' ID3DXAnimationCallbackHandler interface
   HandleCallback AS DWORD           ' HandleCallback method
   ' Custom data
   pVtblAddr AS DWORD                ' Address of the virtual table
   cRef AS DWORD                     ' Reference counter
   pthis AS DWORD                    ' IUnknown of the control that fires the events
END TYPE
' ****************************************************************************************

' ****************************************************************************************
' Builds the IUnknown Virtual Table
' ****************************************************************************************
FUNCTION ID3DXAnimationCallbackHandler_BuildVtbl (BYVAL pthis AS DWORD) AS DWORD

   LOCAL pVtbl AS ID3DXAnimationCallbackHandler_IUnknownVtbl PTR
   LOCAL pUnk AS ID3DXAnimationCallbackHandler_IUnknownVtbl PTR

   pVtbl = HeapAlloc(GetProcessHeap(), %HEAP_ZERO_MEMORY, SIZEOF(@pVtbl))
   IF pVtbl = 0 THEN EXIT FUNCTION

   @pVTbl.QueryInterface        = CODEPTR(ID3DXAnimationCallbackHandler_QueryInterface)
   @pVTbl.AddRef                = CODEPTR(ID3DXAnimationCallbackHandler_AddRef)
   @pVTbl.Release               = CODEPTR(ID3DXAnimationCallbackHandler_Release)
   @pVTbl.HandleCallback        = CODEPTR(ID3DXAnimationCallbackHandler_HandleCallback)
   @pVtbl.pVtblAddr             = pVtbl
   @pVtbl.pthis                 = pthis

   pUnk = VARPTR(@pVtbl.pVtblAddr)
   FUNCTION = pUnk

END FUNCTION
' ****************************************************************************************

' ****************************************************************************************
' UI4 AddRef()
' Increments the reference counter.
' ****************************************************************************************
FUNCTION ID3DXAnimationCallbackHandler_AddRef (BYVAL pthis AS ID3DXAnimationCallbackHandler_IUnknownVtbl PTR) AS DWORD
   INCR @@pthis.cRef
   FUNCTION = @@pthis.cRef
END FUNCTION
' ****************************************************************************************

' ****************************************************************************************
' HRESULT QueryInterface([in] *GUID riid, [out] **VOID ppvObj)
' Returns the IUnknown of our class and increments the reference counter.
' ****************************************************************************************
FUNCTION ID3DXAnimationCallbackHandler_QueryInterface (BYVAL pthis AS ID3DXAnimationCallbackHandler_IUnknownVtbl PTR, BYREF riid AS GUID, BYREF ppvObj AS DWORD) AS DWORD
   ppvObj = pthis
   ID3DXAnimationCallbackHandler_AddRef pthis
   FUNCTION = %D3D_OK
END FUNCTION
' ****************************************************************************************

' ****************************************************************************************
' UI4 Release()
' Releases our class if there is only a reference to him and decrements the reference
' counter.
' ****************************************************************************************
FUNCTION ID3DXAnimationCallbackHandler_Release (BYVAL pthis AS ID3DXAnimationCallbackHandler_IUnknownVtbl PTR) AS DWORD
   LOCAL pVtblAddr AS DWORD
   IF @@pCookie.cRef = 1 THEN
      pVtblAddr = @@pCookie.pVtblAddr
      IF ISTRUE HeapFree(GetProcessHeap(), 0, BYVAL pVtblAddr) THEN
         FUNCTION = 0
         EXIT FUNCTION
      ELSE
         FUNCTION = @@pCookie.cRef
         EXIT FUNCTION
      END IF
   END IF
   DECR @@pCookie.cRef
   FUNCTION = @@pCookie.cRef
END FUNCTION
' ****************************************************************************************

' ****************************************************************************************
' HandleCallback method
' The application implements this method. This method is called when a callback occurs for
' an animation set in one of the tracks during a call to ID3DXAnimationController::AdvanceTime.
' Syntax
'   HRESULT HandleCallback(
'       UINT Track,
'       LPVOID pCallbackData
'   );
' ****************************************************************************************
FUNCTION ID3DXAnimationCallbackHandler_HandleCallback ( _
    BYVAL pthis AS DWORD PTR, _
    BYVAL Track AS DWORD, _
    BYVAL pCallbackData AS DWORD _
    ) AS LONG

   ' *** Put your code here ***

END FUNCTION
' ****************************************************************************************
 

 

Page last updated on Wednesday, 15 March 2006 02:10:39 +0100