yidabu 2007-2-8 18:22
如何使用 WebBrowser 控件 NewWindow2 事件
如何使用 WebBrowser 控件 NewWindow2 事件
知识若不分享 实在没有意义 http://www.yidabu.com 20070208
注意:这篇文章是由无人工介入的自动的机器翻译系统翻译完成。这些文章是微软为不懂英语的用户提供的, 以使他们能够理解这些文章的内容。微软不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的使用所引起的任何直接的, 或间接的可能的问题负责。 文章编号 : 184876 最后修改 : 2004年7月13日 修订 : 1.2 概要 本文介绍如何使用 NewWindow2 事件, 激发由 Microsoft WebBrowser 控件提供了 Microsoft Internet Explorer 4.0, 来指定在其中打开新浏览器窗口所有情况, 应使用浏览器应用程序。
本文将介绍使用 Visual Basic (VB) 5.0 和 Microsoft 基础类 (MFC) 是 Visual C++ 5.0 (VC), 属于此过程。 回到顶端
更多信息 当新窗口时要创建用于显示资源 NewWindow2 事件发生。 例如, 以响应针对 < A0 > window.open < / A0 > 脚本方法到一个新窗口或导航此事件之前创建新窗口从 WebBrowser 控件, 中。
事件处理程序为该事件接收两 out 参数:
ppDisp: A 指向的 InternetExplorer 或 WebBrowser 对象 IDispatch 接口。 设置该指针等于的新或现有 InternetExplorer 或 WebBrowser 对象 IDispatch 接口。 取消: 指针到布尔值。 将该值设置为 VARIANT _ TRUE 会使导航到停止并没有新窗口打开。 为了指定浏览器应用程序, 打开新窗口, 时应使用您设置 ppDisp 等于由应用程序创建新窗口中包含新 WebBrowser 对象。 在此方案, 如果用户选择要在新窗口, 打开网页将应用程序中新窗口是用于显示新网页。(知识若不分享 实在没有意义 http://www.yidabu.com)
此外, RegisterAsBrowser 属性设置为 TRUE 对新建 WebBrowser 控件为了它参与窗口名称解析。 例如, 如果脚本, 中其他地方使用此窗口名称然后该控件将使用代替新建一个因为打开新窗口之前检查所有现有窗口名称。
下面是一些示例 VisualBasic 代码来完成此:
[Copy to clipboard]CODE:
Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean) Dim frmWB As Form1 Set frmWB = New Form1 frmWB.WebBrowser1.RegisterAsBrowser = TRUE Set ppDisp = frmWB.WebBrowser1.Object frmWB.Visible = TrueEnd Sub
使用 MFC, 可能要进行这三种应用程序之一中: ? 基于对话框的 单文档界面 (SDI) 多文档界面 (MDI) 下面是一些示例 MFC 代码, 将完成此任务对话框 - 基于应用程序中: void CYourDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel)
[Copy to clipboard]CODE:
{ m_dlgNewWB = new CYourDlg; m_dlgNewWB->Create(IDD_WBDLG_DIALOG); m_dlgNewWB->m_webBrowser.SetRegisterAsBrowser(TRUE); *ppDisp = m_dlgNewWB->m_webBrowser.GetApplication(); } </code> 下面是一些示例 MFC 代码, 将完成此任务 SDI 或 MDI 应用程序中。 此代码创建一个新框架包含 WebBrowser 控件。 在 SDI 应用程序, 此帧将似乎用户类似应用程序的其他实例。 如同用户已选择以打开一个新子窗口在 MDI 应用程序, 此帧是相同。 void CYourView::OnNewWindow2(LPDISPATCH FAR* ppDisp, <code> BOOL FAR* Cancel) { // Get a pointer to the application object CWinApp* pApp = AfxGetApp(); // Get the correct document template CDocTemplate* pDocTemplate; POSITION pos = pApp->GetFirstDocTemplatePosition(); pDocTemplate = pApp->GetNextDocTemplate(pos); ASSERT(pDocTemplate); // Create the new frame CFrameWnd* pNewFrame = pDocTemplate->CreateNewFrame(GetDocument(), (CFrameWnd*)AfxGetMainWnd()); ASSERT(pNewFrame); // Activate the frame and set its active view pDocTemplate->InitialUpdateFrame(pNewFrame, NULL); CYourView* pWBVw = (CYourView*)pNewFrame->GetActiveView(); ASSERT(pWBVw); pWBVw->m_webBrowser.SetRegisterAsBrowser(TRUE); *ppDisp = pWBVw->m_webBrowser.GetApplication(); }
http://support.microsoft.com/kb/184876
(lastupdate:20070208 最新文章请访问http://www.yidabu.com)
关于一大步成功社区:yidabu.com提倡在交流中学习,在分享中提高收集感兴趣的知识,写下心得,通过网络与别人一起分享理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台