MFC调用JavaScript:CHtmlView与JaveScript交互实现详解

需积分: 0 5 下载量 156 浏览量 更新于2024-08-05 收藏 1.94MB PDF 举报
"MFC对话框中利用CHtmlView加载界面的第二部分,主要讨论了如何通过MFC调用JavaScript。文章介绍了如何获取并使用IWebBrowser(ActiveX插件)的接口,以及如何进一步获取IID_IHTMLDocument2对象接口以实现与HTML文档的交互。" 在MFC应用中,如果需要在对话框中展示HTML界面并能够与界面内的JavaScript代码进行交互,通常会使用CHtmlView这个控件。CHtmlView是MFC对Microsoft的WebBrowser ActiveX控件的封装,允许在Windows应用程序中嵌入Internet Explorer的功能。 首先,我们需要获取IWebBrowser接口,这是ActiveX插件的核心接口,它提供了浏览网页、前进、后退等基本功能。初始化这个接口通常是通过调用CHtmlView的成员函数来完成的,这样我们就可以对加载的网页进行控制。 一旦获取到IWebBrowser接口,接下来的步骤是获取IID_IHTMLDocument2接口。这个接口代表了HTML文档对象模型(DOM),允许我们访问和操作HTML文档的各个元素。通过调用IWebBrowser接口的QueryInterface方法,并传入IID_IHTMLDocument2作为参数,可以得到这个接口的指针。这一步至关重要,因为有了IHTMLDocument2接口,我们才能进一步调用HTML文档的属性和方法。 获取到IHTMLDocument2接口后,我们可以通过它来访问HTML文档的Script接口,这使得MFC程序可以调用页面中的JavaScript函数。例如,我们可以通过调用IDispatch接口的GetIDsOfNames和Invoke方法来执行JavaScript代码。GetIDsOfNames用于获取JavaScript函数或变量的ID,而Invoke则实际执行这些函数。 在实际编程中,通常会定义一些辅助函数来简化这个过程,例如CBaseHtmlView类可能包含一个成员函数GetHtmlDocument,这个函数返回IDispatch指针,然后我们可以通过这个指针调用QueryInterface获取IHTMLDocument2接口。如果获取失败,通常会使用ASSERT来检查错误,并返回FALSE。 MFC调用JavaScript的过程涉及到了COM(Component Object Model)技术,包括接口的获取和调用,以及OLE自动化接口的使用。通过这些技术,MFC应用能够与HTML页面进行深度集成,实现丰富的用户交互功能。理解并熟练掌握这一过程对于开发支持动态交互的MFC应用程序是至关重要的。