Home COM GDI+ WebBrowser Data Access

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