|
|
|
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