|
|
|
IDocHostShowUI Interface |
|
IID_IDocHostShowUI |
{C4D244B0-D43E-11CF-893B-00AA00BDCE1A} |
|
A host can supply mechanisms that will show message boxes and Help by implementing the IDocHostShowUI interface.
MSHTML obtains an IDocHostShowUI interface by calling the host client site's QueryInterface method, requesting IID_IDocHostShowUI. The site is the object that implements the IOleDocumentSite and IOleClientSite interfaces.
|
|
Methods in VTable order |
|
|
IUnknown Methods |
Description |
|
QueryInterface |
Returns pointers to supported interfaces. |
|
AddRef |
Increments reference count. |
|
Release |
Decrements reference count. |
|
IDocHostShowUI Members |
Description |
|
ShowContextMenu |
Called by MSHTML when it needs to display Help. |
|
GetHostInfo |
Called by MSHTML when it needs to display a message box. |
|
IDocHostShowUI interface implementation |
$IID_IDocHostShowUI = GUID$("{C4D244B0-D43E-11CF-893B-00AA00BDCE1A}")
' ****************************************************************************************
' IDocHostShowUI interface
' ****************************************************************************************
TYPE IDocHostShowUIVtbl
' IUnknown methods
pQueryInterface AS DWORD ' // QueryInterface method
pAddRef AS DWORD ' // AddRef method
pRelease AS DWORD ' // Release method
' IDocHostShowUI members
pShowMessage AS DWORD ' // ShowMessage method
pShowHelp AS DWORD ' // ShowHelp method
' Custom data
pVtblAddr AS DWORD ' // Address of the virtual table
cRef AS DWORD ' // Reference count
END TYPE
' ****************************************************************************************
' ****************************************************************************************
' Builds the IDocHostShowUI Virtual Table
' Returns a cookie that is a pointer to a IDocHostShowUIVtbl structure.
' ****************************************************************************************
FUNCTION IDocHostShowUI_BuildVtbl () AS DWORD
LOCAL pVtbl AS IDocHostShowUIVtbl PTR
LOCAL pUnk AS IDocHostShowUIVtbl PTR
pVtbl = HeapAlloc(GetProcessHeap(), %HEAP_ZERO_MEMORY, SIZEOF(@pVtbl))
IF pVtbl = 0 THEN EXIT FUNCTION
@pVtbl.pQueryInterface = CODEPTR(IDocHostShowUI_QueryInterface)
@pVtbl.pAddRef = CODEPTR(IDocHostShowUI_AddRef)
@pVtbl.pRelease = CODEPTR(IDocHostShowUI_Release)
@pVtbl.pShowMessage = CODEPTR(IDocHostShowUI_ShowMessage)
@pVtbl.pShowHelp = CODEPTR(IDocHostShowUI_ShowHelp)
@pVtbl.pVtblAddr = pVtbl
@pVtbl.cRef = 1
pUnk = VARPTR(@pVtbl.pVtblAddr)
FUNCTION = pUnk
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' IDocHostShowUI_QueryInterface method
' Returns the IUnknown of our class and increments the reference counter.
' ****************************************************************************************
FUNCTION IDocHostShowUI_QueryInterface (BYVAL pCookie AS IDocHostShowUIVtbl PTR, BYREF riid AS GUID, BYREF ppvObj AS DWORD) AS LONG
IF riid = $IID_IDocHostShowUI THEN
ppvObj = pCookie
INCR @@pCookie.cRef
FUNCTION = %S_OK
ELSE
FUNCTION = %E_NOINTERFACE
END IF
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' IDocHostShowUI_AddRef method
' Increments the reference counter.
' ****************************************************************************************
FUNCTION IDocHostShowUI_AddRef (BYVAL pCookie AS IDocHostShowUIVtbl PTR) AS DWORD
INCR @@pCookie.cRef
FUNCTION = @@pCookie.cRef
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' IDocHostShowUI_Release method
' Releases our class if there is only a reference to him and decrements the reference counter.
' ****************************************************************************************
FUNCTION IDocHostShowUI_Release (BYVAL pCookie AS IDocHostShowUIVtbl PTR) AS DWORD
DECR @@pCookie.cRef
FUNCTION = @@pCookie.cRef
IF @@pCookie.cRef = 0 THEN
IF ISTRUE @@pCookie.pVtblAddr THEN
HeapFree(GetProcessHeap(), 0, BYVAL @@pCookie.pVtblAddr)
END IF
END IF
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' Called by MSHTML when it needs to display a message box.
' ****************************************************************************************
FUNCTION IDocHostShowUI_ShowMessage (BYVAL pCookie AS IDocHostShowUIVtbl PTR, BYVAL hwnd AS DWORD, BYVAL lpstrText AS DWORD, BYVAL lpstrCaption AS DWORD, BYVAL dwType AS DWORD, BYVAL lpstrHelpFile AS DWORD, BYVAL dwHelpContext AS DWORD, BYREF plResult AS LONG) AS LONG
' Put your code here
' FUNCTION = %S_OK, or %S_FALSE
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' Called by MSHTML when it needs to display Help.
' ****************************************************************************************
FUNCTION IDocHostShowUI_ShowHelp (BYVAL pCookie AS IDocHostShowUIVtbl PTR, BYVAL hwnd AS DWORD, BYVAL pszHelpFile AS DWORD, BYVAL uCommand AS DWORD, BYVAL dwData AS DWORD, BYREF ptMouse AS POINTAPI, BYREF pDispatchObjectHit AS DWORD) AS LONG
' Put your code here
' FUNCTION = %S_OK, or %S_FALSE
END FUNCTION
' ****************************************************************************************
|
Page last updated on Monday, 03 April 2006 19:44:27 +0200