html - 在 Windows (XP +) C++ 应用程序中嵌入 HTML/CSS/JS 内容的最简单方法?

标签 html windows

我有一个使用 Visual Studio 2010 用 C++ 编写的应用程序作为 .EXE 在 Windows(XP 版本以上)上运行。它为现有 UI 使用纯 Win32。

我也有一些基于网络浏览器格式的内容,HTML/CSS/JavaScript。我希望在应用程序窗口中显示此内容,就像 WebView 在 Android 上的工作方式和 UIWebView 在 iPhone 上的工作方式一样。 Web 内容应该能够通过调用自定义 JavaScript 方法与周围的 native 应用程序进行通信。

我知道 WebKit 项目。但是,查看可供下载的二进制文件,它似乎作为一个独立的应用程序呈现,而不是一个可以链接到 C++ 应用程序以允许显示浏览器内容的库。

谁能推荐一个好的方法?

最佳答案

如果您使用的是 MFC,Patrick 的回答是正确的。

如果您不使用 MFC,则可以使用“ATL 控件包含”嵌入 Internet Explorer - 请参阅 How to add ATL control containment support to any window in Visual C++ .

归结为链接正确的库,然后使用这个单行代码:

// Creates the Web Browser control and navigates to the 
// specified web page.
HWND hWnd = ::CreateWindow("AtlAxWin", "http://www.microsoft.com", 
                           WS_CHILD|WS_VISIBLE, 10, 10, 500, 300, hParent, NULL,
                           ::GetModuleHandle(NULL), NULL);

让 JavaScript 调用 C++ 应用程序中的函数有点麻烦 - 您需要创建一个实现 IDispatch 的对象,然后将其传递给 Advise IE 控件的IConnectionPoint 接口(interface)的方法,您通过IConnectionPointContainer::FindConnectionPoint 获得。然后,您的 JavaScript 调用 window.external.my_func(...),这成为对 IDispatch 实现对象的 Invoke 方法的调用。

关于html - 在 Windows (XP +) C++ 应用程序中嵌入 HTML/CSS/JS 内容的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823328/

相关文章:

html - 如何为元素提供 html 层次结构中高 2 级的另一个元素的背景?

javascript - 使用 Jquery 将 div 内容单独的行和单元格导出到 Excel?

windows - 为什么我的 Ruby 线程演示不使用两个内核?

windows - 调试 javascript 时禁用 Safari 中的 "Slow script"对话框?

windows - TFS 构建期间的 Git 操作 : "fatal: could not read Password" (wincred used)

jquery - 网格中心的一个 ui block - jquery mobile

javascript - 我怎样才能让一切都与背景图片相关?

c++ - 有没有一种方法可以处理鼠标移动并执行 MessageBeep?

c++ - HBITMAP 可以包含 alpha channel 信息吗?

html - CSS 计算器 : Wrong values when using percentage?