描述
用户程序集实现的回调指针接受托管WebBrowser控件的事件.
语法
FUNCTION SetEventProc ( _ BYVAL pwszEventName AS WSTRING PTR, _ BYVAL pProc AS ANY PTR _ ) AS HRESULT |
参数
pwszEventName
事件的名称.可用的名称是:
statustextchangeā
downloadcompleteā
CommandStateChange
downloadbegin?o
ProgressChange
PropertyChange
TitleChange
PrintTemplateInstantiation
PrintTemplateTeardown
BeforeNavigate2
NewWindow2
NavigateComplete2
可见
OnToolBar
OnMenuBar
OnStatusBar
OnFullScreen
一个DocumentComplete
OnTheaterMode
WindowSetResizable
WindowClosing
WindowSetLeft
WindowSetTop
windowsetwidth?
WindowSetHeight
ClientToHostWindow
SetSecureLockIcon
FileDownload
NavigateError
PrivacyImpactedStateChange
NewWindow3
SetPhishingFilterStatus
WindowStateChanged
HtmlDocumentEvents
pProc
回调过程的地址.
Function callback prototypes
SUB BeforeNavigate2Proc (BYVAL hwndContainer AS HWND, BYVAL pdisp AS IDispatch PTR, _
BYVAL vUrl AS VARIANT PTR, BYVAL Flags AS VARIANT PTR, BYVAL TargetFrameName AS VARIANT PTR, _
BYVAL PostData AS VARIANT PTR, BYVAL Headers AS VARIANT PTR, BYVAL pbCancel AS VARIANT_BOOL PTR)
SUB ClientToHostWindowProc (BYVAL hwndContainer AS HWND, BYVAL CX AS LONG PTR, BYVAL CY AS LONG PTR)
SUB CommandStateChangeProc (BYVAL hwndContainer AS HWND, BYVAL nCommand AS LONG, BYVAL fEnable AS VARIANT_BOOL)
SUB DocumentCompleteProc (BYVAL hwndContainer AS HWND, BYVAL pdisp AS IDispatch PTR, BYVAL vUrl AS VARIANT PTR)
SUB DownloadBeginProc (BYVAL hwndContainer AS HWND)
SUB DownloadCompleteProc (BYVAL hwndContainer AS HWND)
SUB FileDownloadProc (BYVAL hwndContainer AS HWND, BYVAL pbCancel AS VARIANT_BOOL PTR)
SUB NavigateComplete2Proc (BYVAL hwndContainer AS HWND, BYVAL pdisp AS IDispatch PTR, BYVAL vUrl AS VARIANT PTR)
SUB NavigateErrorProc (BYVAL hwndContainer AS HWND, BYVAL pdisp AS IDispatch PTR, _
BYVAL vUrl AS VARIANT PTR, BYVAL vFrame AS VARIANT PTR, BYVAL StatusCode AS VARIANT PTR, BYVAL pbCancel AS VARIANT_BOOL PTR)
SUB NewWindow3Proc (BYVAL hwndContainer AS HWND, BYVAL ppdispVal AS IDispatch PTR PTR, _
BYVAL pbCancel AS VARIANT_BOOL PTR, BYVAL dwFlags AS ULONG, BYVAL pwszUrlContext AS WSTRING PTR, BYVAL pwszUrl AS WSTRING PTR)
SUB OnVisibleProc (BYVAL hwndContainer AS HWND, BYVAL bVisible AS VARIANT_BOOL)
SUB PrintTemplateInstantiationProc (BYVAL hwndContainer AS HWND, BYVAL pdisp AS IDispatch PTR)
SUB PrintTemplateTeardownProc (BYVAL hwndContainer AS HWND, BYVAL pdisp AS IDispatch PTR)
SUB PrivacyImpactedStateChangeProc (BYVAL hwndContainer AS HWND, BYVAL bImpacted AS VARIANT_BOOL)
SUB ProgressChangeProc (BYVAL hwndContainer AS HWND, BYVAL Progress AS LONG, BYVAL ProgressMax AS LONG)
SUB PropertyChangeProc (BYVAL hwndContainer AS HWND, BYVAL pwszProperty AS WSTRING PTR)
SUB SetSecureLockIconProc (BYVAL hwndContainer AS HWND, BYVAL SecureLockIcon AS LONG)
SUB StatusTextChangeProc (BYVAL hwndContainer AS HWND, BYVAL pwszText AS WSTRING PTR)
SUB TitleChangeProc (BYVAL hwndContainer AS HWND, BYVAL pwszText AS WSTRING PTR)
SUB WindowClosingProc (BYVAL hwndContainer AS HWND, BYVAL IsChildWindow AS VARIANT_BOOL, BYVAL pbCancel AS VARIANT_BOOL PTR)
SUB WindowSetHeightProc (BYVAL hwndContainer AS HWND, BYVAL nHeight AS LONG)
SUB WindowSetLeftProc (BYVAL hwndContainer AS HWND, BYVAL nLenft AS LONG)
SUB WindowSetResizableProc (BYVAL hwndContainer AS HWND, BYVAL bResizable AS VARIANT_BOOL)
SUB WindowSetTopProc (BYVAL hwndContainer AS HWND, BYVAL nTop AS LONG)
SUB WindowSetWidthProc (BYVAL hwndContainer AS HWND, BYVAL nWidth AS LONG)
SUB WindowStateChangedProc (BYVAL hwndContainer AS HWND, BYVAL dwFlags AS LONG, BYVAL dwValidFlagsMask AS LONG)
FUNCTION HtmlDocumentEventsProc (BYVAL hwndContainer AS HWND, BYVAL dispid AS LONG, BYVAL pEvtObj AS IHTMLEventObj) AS BOOLEAN
用法示例
' // 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(this->m_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(this->m_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