调用 _ Navigate _ 方法比 _ GoBack _ 以及 _GoForward _ 要困难,但如果你正仅仅导航到URL 且并不传递任何附加参数, 它的调用很容易。 举例来说, VB中导航到 Microsoft 主页, 可如下:
WebBrowser1.Navigate "http://www.microsoft.com"
VB代码调用 Navigate 如此容易因为所有参数出第一个参数外都可以是可选. 如此相对照,VC++不可以省略任何参数. 如果你想使用VC++不是勇任何特别的参数导航到 Microsoft的 home page, 你必须传递空的 VARIANT 结构。 MFC 应用程序,你必须如下调用 Navigate
COleVariant vtEmpty;
m_webBrowser.Navigate(_T("http://www.microsoft.com"), &vtEmpty, &vtEmpty,
&vtEmpty, &vtEmpty);
该例子展示了在 MFC应用程序中控制WebBrowser控件. 我传递一个普通的字符串而替代 BSTR 因为 MFC 提供了一个 WebBrowser 控件的包装类,第一个载包装类中是 LPCTSTR , 一个普通的字符串. 其他参数为指向 VARIANT 结构的指针。 如果你不想指定任何特别的参数, 别仅仅传递 NULL —那样做, 你的应用程序会招来崩溃。你必须传递一个空的 VARIANT 结构的指针. 前面的代码使用了 COleVariant 类, 那是一个与 CComVariant 类相似的类 。 COleVariant 简单包装了 VARIANT 使得 VARIANT 结构易于使用.
属性 现在你看到了所有的 _ IwebBrowser _ 的方法,你大概向了解其属性。 (我是不是太苛求了?) IWebBrowser 接口有30个属性,描述于表6-2. 我一已按照 IWebBrowser 的Vtable中的字母序列出。
** Table 6-2. ** IWebBrowser 属性按照vtable排序
**_ 属性 _ ** **
**
|
**_ 描述 _ ** **
**
---|---
_ Application _
|
返回宿主 WebBrowser 控件的自动化对象 ( IDispatch ) 实现,如果对象不可用,则返回的 WebbOrwser 控件的自动化对象
_ Parent _
|
返回 WebBrowser 控件的父控件的自动化实现 ( IDispatch ) ,通常是容器 — 举例来讲 , ,您的宿主或者 Internet Explorer 窗口。
_ Container _
|
返回 WebBrowser 控件容器的自动化对象 ( IDispatch ) 。通常,该值返回同 _ Parent _ 属性一样的值。 .
_ Document _
|
返回活动文档的自动化实现 ( IDispatch ) 。如果 HTML 当前显示在 WebBrowser , _ Document _ 属性给出你存取 DHTML 对象模型的途径 .
_ TopLevelContainer _
|
返回一个布尔值指示 IE 是否是 WebBRowser 控件的顶级容器。在 words 中,如果 IE 是宿主应用承需则返回 _ true _
_ Type _
|
返回已经在 WebBrowser 中装载的对象的类型。举例,如果 HTML document 被装载 , Type 将返回 _ Microsoft HTML Document 5.0 _ . 如果文档是 Word 文档 , Type 返回 _ Microsoft Word Document _ .
_ Left _
|
. 返回或设置控件在容器窗口左边距
_ Top _
|
. 返回或设置控件在容器窗口顶部边距
_ Width _
|
返回或设置 webbrowser 控件在窗口中的水平方向的向苏为单位宽度
_ Height _
|
返回或设置 webbrowser 控件在窗口中的处置方向的向像素为单位高度
_ LocationName _
|
返回一个 WebBrowser 当前显示的资源名称的字符串 ( 换句话讲 , HTML 页 , Word 文档 , , folder, 诸如此类 ) 。 如果资源是 HTML 页,字符串是标题。如果资源是文件或者文件夹,字符串为文件名或者文件夹名。 — 举例 , foo.doc ( Word 文档)或者 Temp ( temp directory. )
_ LocationURL _
|
返回 WebBrowser 正在显示的资源的 URL
_ Busy _
|
返回一个布尔值指示 WebBrowser 当前是否正在装入 URL. 。如果当前属性返回 _ true _ , __ 你可以使用 _ Stop _ 方法取消代掉导航。
看完表 6-2, 清晰展示了你可使用的属性. 当中的一些可能需要更多的解释. IWebBrowser 使用的相当多的一个属性是 LocationURL , 给出了当前你装入WebBrowser窗口的 URL。 获取 LocationURL 值在VB中相当容易:
Dim strLocation
strLocation = WebBrowser1.LocationURL
Visual C++的MFC应用, MFC 包装类使的访问 LocationURL 很容易. 你简单调用 GetLocationURL 方法,该方法返回一个 CString 对象. 当你想在自动化IE中或者webBrowser的MFC应用中访问 LocationURL when automating Internet Explorer or when hosting the WebBrowser control in a C++ application that's not built by using MFC, 你必须调用携带一指向BSTR的指针 。 BSTR 将包含返回值. 此处展示如何在 C++中使用:
BSTR bstrURL;
m_pInternetExplorer->get_LocationURL(&bstrURL);
存取 _ Document _ 属性在VB中相当容易,当定义一个变量后(举例, HtmlDoc ), 值需要 set 为 Document 属性:
Set HtmlDoc = WebBrowser1.Document
MFC 中也很容易,使用 MFC 包装类的GetDocument方法:
IDispatch* pDisp;
pDisp = m_webBrowser.GetDocument();
_ GetDocument _ 返回指向代表文档 _ IDispatch _ 接口的指针. 如果 GetDocument 失败, 该对象将为 NULL .
非 MFC C++ 应用或者任何自动化IE的C++ 应用访问 Document 属性就只能够采用调用COM的方法—通过属性的 get_ 方法. (注艺属性实只读,所以这里无 put_ 方法.) 当调用 Document _ 的 get 方法,你传递一个接受 IDispatch 的指针.此处展示了如何调用:
IDispatch* pDisp;
HRESULT hr = m_pInternetExplorer->get_Document(&pDisp);
当使用这些代码 ,你可以使用 SUCCEEDED 宏( Win32 API的一部分), 以监测调用是否成功。在尝试使用 Idispatch 接口前你应当确信调用成功。