Delphi知识中心
www.delphi.ee
提供Delphi技术知识
与Delphi程序员共同进步


在线服务QQ:99923144 随时恭候您的光临
首页 基础知识 WIN系统 组件使用 组件开发 数据库 ACTIVEX 多媒体技术 网络技术 关于
文章类别:网络技术    你尚未登陆,会员功能无法使用,请从 网站首页 登陆。
  showModelessDialog未触发NewWindow2  
 

问题:

showModalDialog 和 showModelessDialog 未触发 NewWindow2

症状:

调用 showModalDialog 或 showModelessDialog 不会触发 NewWindow2 事件。这适用于 DWebBrowserEvents2::NewWindow2,以及其 Microsoft Visual Basic 等效,NewWindow2 事件,web 浏览器和 InternetExplorer 对象。

原因:

Internet Explorer 的新实例是在创建时,只被激发 NewWindow2 事件。模式状态下/无模式对话框不是 Internet Explorer 的新实例。它们实现为 MSHTML 使他们能够呈现和显示 HTML 内容的宿主窗口(但不是在文档间的超链接)。此外,它们不会出现在 $ 任务栏中,都将关闭时创建它们的窗口已关闭。


更多信息

重现行为的步骤

1. 将以下文本复制到新的 HTML 文件中调用 NoNewWnd.htm:



NewWindow2 Test










2. 在 Visual Basic 中开始一个新的标准 EXE 项目。默认情况下创建 Form1。
3. 通过选择在 项目 菜单上的 组件,然后选择 Microsoft Internet 控件 (Shdocvw.dll) 添加到 web 浏览器控件的引用。

web 浏览器控件将出现在 工具箱。
4. 创建一个新实例的 web 浏览器控件在 Form1 上。
5. 将下面的代码复制到 Form1 的代码窗口中

Private Sub Form_Load()
' Replace "C:\noNewWnd.htm" with the absolute path
' to the HTML file you created in Step 1.
strFileName = "C:\noNewWnd.htm"
WebBrowser1.Navigate2 strFileName
End Sub

Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)
MsgBox "I just caught NewWindow2!"
End Sub

6. 从 运行 菜单中单击 开始,或按 F5 键以启动程序。单击每个三个按钮,并观察该行为。

注:showModalDialog 方法不可用之前对 Internet 资源管理器 5 并在这些版本将导致运行时错误。

 

在线服务QQ:99923144 Delphi程序员QQ群(139442)
Delphi知识中心 www.delphi.ee 最专业的Delphi技术资料网站