描述
用户程序集实现的回调指针接收该IDocHostUIHandler2接口事件.
语法
FUNCTION SetUIEventProc ( _ BYVAL pwszEventName AS WSTRING PTR, _ BYVAL pProc AS ANY PTR _ ) AS HRESULT |
参数
pwszEventName
事件的名称.可用的名称是:
ShowContextMenu
GetHostInfo
ShowUI
HideUI
UpdateUI
EnableModeless
OnDocWindowActivate
OnFrameWindowActivate
ResizeBorder
TranslateAccelerator
getoptionkeypathā
GetDropTarget
GetExternal
TranslateUrl
filterdataobjectā
GetOverrideKeyPath
pProc
回调过程的地址.
Function callback prototypes
FUNCTION EnableModelessProc (BYVAL hwndContainer AS HWND, BYVAL fEnable AS WINBOOL) AS HRESULT
FUNCTION FilterDataObjectProc (BYVAL hwndContainer AS HWND, BYVAL pDO AS IDataObject PTR, BYVAL ppDORet AS IDataObject PTR PTR) AS HRESULT
FUNCTION GetDropTargetProc (BYVAL hwndContainer AS HWND, BYVAL pDropTarget AS IDropTarget PTR, BYVAL ppDropTarget AS IDropTarget PTR PTR) AS HRESULT
FUNCTION GetExternalProc (BYVAL hwndContainer AS HWND, BYVAL ppDispatch AS IDispatch PTR PTR) AS HRESULT
FUNCTION GetHostInfoProc (BYVAL hwndContainer AS HWND, BYVAL pInfo AS DOCHOSTUIINFO PTR) AS HRESULT
FUNCTION GetOptionKeyPathProc (BYVAL hwndContainer AS HWND, BYVAL pchKey AS LPOLESTR PTR, BYVAL dw AS DWORD) AS HRESULT
FUNCTION GetOverrideKeyPathProc (BYVAL hwndContainer AS HWND, BYVAL pchKey AS LPOLESTR PTR, BYVAL dw AS DWORD) AS HRESULT
FUNCTION HideUIProc (BYVAL hwndContainer AS HWND) AS HRESULT
FUNCTION OnDocWindowActivateProc (BYVAL hwndContainer AS HWND, BYVAL fActivate AS WINBOOL) AS HRESULT
FUNCTION OnFrameWindowActivateProc (BYVAL hwndContainer AS HWND, BYVAL fActivate AS WINBOOL) AS HRESULT
FUNCTION ResizeBorderProc (BYVAL hwndContainer AS HWND, BYVAL prcBorder AS LPCRECT, BYVAL pUIWindow AS IOleInPlaceUIWindow PTR, BYVAL frameWindow AS WINBOOL) AS HRESULT
FUNCTION ShowContextMenuProc (BYVAL hwndContainer AS HWND, BYVAL dwID AS DWORD, BYVAL ppt AS POINT PTR, BYVAL pcmdtReserved AS IUnknown PTR, BYVAL pdispReserved AS IDispatch PTR) AS HRESULT
FUNCTION ShowUIProc (BYVAL hwndContainer AS HWND, BYVAL dwID AS DWORD, BYVAL pActiveObject AS IOleInPlaceActiveObject PTR, BYVAL pCommandTarget AS IOleCommandTarget PTR, BYVAL pFrame AS IOleInPlaceFrame PTR, BYVAL pDoc AS IOleInPlaceUIWindow PTR) AS HRESULT
FUNCTION TranslateAcceleratorProc (BYVAL hwndContainer AS HWND, BYVAL lpMsg AS LPMSG, BYVAL pguidCmdGroup AS const GUID PTR, BYVAL nCmdID AS DWORD) AS HRESULT
FUNCTION TranslateUrlProc (BYVAL hwndContainer AS HWND, BYVAL dwTranslate AS DWORD, BYVAL pchURLIn AS LPWSTR, BYVAL ppchURLOut AS LPWSTR PTR) AS HRESULT
FUNCTION UpdateUIProc (BYVAL hwndContainer AS HWND) AS HRESULT
用法示例
' // Add a WebBrowser control
DIM pwb AS CWebBrowser = CWebBrowser(@pWindow, IDC_WEBBROWSER, 0, 0, pWindow.ClientWidth, pWindow.ClientHeight)
' // Connect events
pwb.Advise
' // Set event callback procedures
pwb.SetEventProc("StatusTextChange", @WebBrowser_StatusTextChangeProc)
pwb.SetEventProc("DocumentComplete", @WebBrowser_DocumentCompleteProc)
' // Set the IDocHostUIHandler interface
pwb.SetUIHandler
' // Set event callback procedures
pwb.SetUIEventProc("ShowContextMenu", @DocHostUI_ShowContextMenuProc)
pwb.SetUIEventProc("GetHostInfo", @DocHostUI_GetHostInfo)
pwb.SetUIEventProc("TranslateAccelerator", @DocHostUI_TranslateAccelerator)
' // Navigate to a URL
pwb.Navigate("http://com.it-berater.org/")
' ========================================================================================
' Process the WebBrowser StatusTextChange event.
' ========================================================================================
SUB WebBrowser_StatusTextChangeProc (BYVAL hwndContainer AS HWND, BYVAL bstrText AS AFX_BSTR)
IF bstrText THEN StatusBar_SetText(GetDlgItem(GetParent(hwndContainer), IDC_SATUSBAR), 0, *bstrText)
END SUB
' ========================================================================================
' ========================================================================================
' Process the WebBrowser DocumentComplete event.
' ========================================================================================
SUB WebBrowser_DocumentCompleteProc (BYVAL hwndContainer AS HWND, BYVAL pdisp AS IDispatch PTR, BYVAL vUrl AS VARIANT PTR)
' // The vUrl parameter is a VT_BYREF OR VT_BSTR variant
DIM varUrl AS VARIANT
VariantCopyInd(@varUrl, vUrl)
DIM bstrUrl AS AFX_BSTR = varUrl.bstrVal
IF bstrUrl THEN StatusBar_SetText(GetDlgItem(GetParent(hwndContainer), IDC_SATUSBAR), 0, "Document complete: " & *bstrUrl)
VariantClear(@varUrl)
END SUB
' ========================================================================================
' ========================================================================================
' Process the IDocHostUIHandler ShowContextMenu event.
' ========================================================================================
FUNCTION DocHostUI_ShowContextMenuProc (BYVAL hwndContainer AS HWND, BYVAL dwID AS DWORD, BYVAL ppt AS POINT PTR, BYVAL pcmdtReserved AS IUnknown PTR, BYVAL pdispReserved AS IDispatch PTR) AS HRESULT
' // This event notifies that the user has clicked the right mouse button to show the
' // context menu. We can anulate it returning %S_OK and show our context menu.
' // Do not allow to show the context menu
AfxMsg "Sorry! Context menu disabled"
RETURN S_OK
' // Host did not display its UI. MSHTML will display its UI.
RETURN S_FALSE
END FUNCTION
' ========================================================================================
' ========================================================================================
' Process the IDocHostUIHandler GetHostInfo event.
' ========================================================================================
PRIVATE FUNCTION DocHostUI_GetHostInfo (BYVAL hwndContainer AS HWND, BYVAL pInfo AS DOCHOSTUIINFO PTR) AS HRESULT
IF pInfo THEN
pInfo->cbSize = SIZEOF(DOCHOSTUIINFO)
pInfo->dwFlags = DOCHOSTUIFLAG_NO3DBORDER OR DOCHOSTUIFLAG_THEME OR DOCHOSTUIFLAG_DPI_AWARE
pInfo->dwDoubleClick = DOCHOSTUIDBLCLK_DEFAULT
pInfo->pchHostCss = NULL
pInfo->pchHostNS = NULL
END IF
RETURN S_OK
END FUNCTION
' ========================================================================================
' ========================================================================================
' Process the IDocHostUIHandler TranslateAccelerator event.
' ========================================================================================
PRIVATE FUNCTION DocHostUI_TranslateAccelerator (BYVAL hwndContainer AS HWND, BYVAL lpMsg AS LPMSG, BYVAL pguidCmdGroup AS const GUID PTR, BYVAL nCmdID AS DWORD) AS HRESULT
' // When you use accelerator keys such as TAB, you may need to override the
' // default host behavior. The example shows how to do this.
IF lpMsg->message = WM_KEYDOWN AND lpMsg->wParam = VK_TAB THEN
RETURN S_FALSE ' S_OK to disable tab navigation
END IF
' // return S_FALSE if you don't process the message
RETURN S_FALSE
END FUNCTION
' ========================================================================================
引用文件
CWebBrowser.inc