|
|
|
IMAPIViewContext Interface |
|
IID_IMAPIViewContext |
{00020321-0000-0000-C000-000000000046} |
|
The IMAPIViewContext interface manages a form in a client application's form viewer.
|
' ****************************************************************************************
' IMAPIViewContext interface
' $IID_IMAPIViewContext = GUID$("{00020321-0000-0000-C000-000000000046}")
' The IMAPIViewContext interface manages a form in a client application's form viewer.
' ****************************************************************************************
' ========================================================================================
' IUnknown virtual table
' ========================================================================================
TYPE IMAPIViewContext_IUnknownVtbl
' IUnknown interface
QueryInterface AS DWORD ' Returns pointers to supported interfaces
AddRef AS DWORD ' Increments reference count
Release AS DWORD ' Decrements reference count
' IMAPIViewContext interface
SetAdviseSink AS DWORD ' SetAdviseSink method
ActivateNext AS DWORD ' ActivateNext method
GetPrintSetup AS DWORD ' GetPrintSetup method
GetSaveStream AS DWORD ' GetSaveStream method
GetViewStatus AS DWORD ' GetViewStatus 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 IMAPIViewContext_BuildVtbl (BYVAL pthis AS DWORD) AS DWORD
LOCAL pVtbl AS IMAPIViewContext_IUnknownVtbl PTR
LOCAL pUnk AS IMAPIViewContext_IUnknownVtbl PTR
pVtbl = HeapAlloc(GetProcessHeap(), %HEAP_ZERO_MEMORY, SIZEOF(@pVtbl))
IF pVtbl = 0 THEN EXIT FUNCTION
@pVTbl.QueryInterface = CODEPTR(IMAPIViewContext_QueryInterface)
@pVTbl.AddRef = CODEPTR(IMAPIViewContext_AddRef)
@pVTbl.Release = CODEPTR(IMAPIViewContext_Release)
@pVTbl.SetAdviseSink = CODEPTR(IMAPIViewContext_SetAdviseSink)
@pVTbl.ActivateNext = CODEPTR(IMAPIViewContext_ActivateNext)
@pVTbl.GetPrintSetup = CODEPTR(IMAPIViewContext_GetPrintSetup)
@pVTbl.GetSaveStream = CODEPTR(IMAPIViewContext_GetSaveStream)
@pVTbl.GetViewStatus = CODEPTR(IMAPIViewContext_GetViewStatus)
@pVtbl.pVtblAddr = pVtbl
@pVtbl.pthis = pthis
pUnk = VARPTR(@pVtbl.pVtblAddr)
FUNCTION = pUnk
END FUNCTION
' ========================================================================================
' ========================================================================================
' UI4 AddRef()
' Increments the reference counter.
' ========================================================================================
FUNCTION IMAPIViewContext_AddRef (BYVAL pIMAPIViewContext AS IMAPIViewContext_IUnknownVtbl PTR) AS DWORD
INCR @@pIMAPIViewContext.cRef
FUNCTION = @@pIMAPIViewContext.cRef
END FUNCTION
' ========================================================================================
' ========================================================================================
' HRESULT QueryInterface([in] *GUID riid, [out] **VOID ppvObj)
' Returns the IUnknown of our class and increments the reference counter.
' ========================================================================================
FUNCTION IMAPIViewContext_QueryInterface (BYVAL pIMAPIViewContext AS IMAPIViewContext_IUnknownVtbl PTR, BYREF riid AS GUID, BYREF ppvObj AS DWORD) AS DWORD
ppvObj = pIMAPIViewContext
IMAPIViewContext_AddRef pIMAPIViewContext
FUNCTION = %S_OK
END FUNCTION
' ========================================================================================
' ========================================================================================
' UI4 Release()
' Releases our class if there is only a reference to him and decrements the reference counter.
' ========================================================================================
FUNCTION IMAPIViewContext_Release (BYVAL pIMAPIViewContext AS IMAPIViewContext_IUnknownVtbl PTR) AS DWORD
LOCAL pVtblAddr AS DWORD
IF @@pIMAPIViewContext.cRef = 1 THEN
pVtblAddr = @@pIMAPIViewContext.pVtblAddr
IF ISTRUE HeapFree(GetProcessHeap(), 0, BYVAL pVtblAddr) THEN
FUNCTION = 0
EXIT FUNCTION
ELSE
FUNCTION = @@pIMAPIViewContext.cRef
EXIT FUNCTION
END IF
END IF
DECR @@pIMAPIViewContext.cRef
FUNCTION = @@pIMAPIViewContext.cRef
END FUNCTION
' ========================================================================================
' ========================================================================================
' IMAPIViewContext::SetAdviseSink
' Manages a form's registration to receive notifications about changes in the viewer.
' ========================================================================================
FUNCTION IMAPIViewContext_SetAdviseSink ( _
BYVAL BYVAL pIMAPIViewContext AS IMAPIViewContext_IUnknownVtbl PTR _
, BYVAL pmvns AS DWORD _
) AS LONG
' *** Put your code here ***
' Return Values
' %S_OK The registration or cancellation for form notification succeeded.
END FUNCTION
' ========================================================================================
' ========================================================================================
' IMAPIViewContext::ActivateNext
' Manages a form's registration to receive notifications about changes in the viewer.
' ========================================================================================
FUNCTION IMAPIViewContext_ActivateNext ( _
BYVAL BYVAL pIMAPIViewContext AS IMAPIViewContext_IUnknownVtbl PTR _
, BYVAL ulDir AS DWORD _
, BYREF prcPosRect AS RECT _
) AS LONG
' *** Put your code here ***
' Return Values
' %S_OK The message was activated successfully.
' %S_FALSE The message was activated successfully, but a different type of form was
' opened in the process.
END FUNCTION
' ========================================================================================
' ========================================================================================
' IMAPIViewContext::GetPrintSetup
' Manages a form's registration to receive notifications about changes in the viewer.
' ========================================================================================
FUNCTION IMAPIViewContext_GetPrintSetup ( _
BYVAL BYVAL pIMAPIViewContext AS IMAPIViewContext_IUnknownVtbl PTR _
, BYVAL ulFlags AS DWORD _
, BYREF lppFormPrintSetup AS DWORD _
) AS LONG
' *** Put your code here ***
' Return Value
' %S_OK The printing information was successfully retrieved.
END FUNCTION
' ========================================================================================
' ========================================================================================
' IMAPIViewContext::GetSaveStream
' Retrieves a stream to be used for saving the current message.
' ========================================================================================
FUNCTION IMAPIViewContext_GetSaveStream ( _
BYVAL BYVAL pIMAPIViewContext AS IMAPIViewContext_IUnknownVtbl PTR _
, BYREF pulFlags AS DWORD _
, BYREF pulFormat AS DWORD _
, BYREF ppstm AS DWORD _
) AS LONG
' *** Put your code here ***
' Return Value
' %S_OK The stream was successfully retrieved.
END FUNCTION
' ========================================================================================
' ========================================================================================
' IMAPIViewContext::GetViewStatus
' Retrieves the current viewer status.
' ========================================================================================
FUNCTION IMAPIViewContext_GetViewStatus ( _
BYVAL BYVAL pIMAPIViewContext AS IMAPIViewContext_IUnknownVtbl PTR _
, BYREF lpulStatus AS DWORD _
) AS LONG
' *** Put your code here ***
' Return Value
' %S_OK The viewer's status was successfully returned.
END FUNCTION
' ========================================================================================
|
Page last updated on Monday, 03 April 2006 20:17:02 +0200