c++ - 在 ATL ActiveX 控件中嵌入 WTL App

标签 c++ activex atl openoffice.org wtl

有没有办法以某种方式在 ATL ActiveX 中嵌入 WTL destop 应用程序(即扩展)?

我想要实现的是创建一个带有办公文件查看器的 ActiveX 控件。 作为基础,我有一个桌面 WTL 应用程序(前段时间编写),它使用 OOo v3 API 来显示文档。

  • 我已经创建了一个 ActiveX 项目,链接了必要的库和包含。
  • 我可以调用 WTL 和 OO Api 方法。
  • 已添加一些属性和方法以满足宿主应用程序的要求。
  • 我的 ActiveX 在 ie 和主机应用程序中正确显示

我的运气(和知识?)到此结束。

我的控件有 m_hwnd 属性,但它总是设置为 0; 我用 Google 搜索了一下,发现我可以通过

this->m_spInPlaceSite->GetWindow()

但它也不起作用。每次我想创建一个窗口运行时以 IsWindow() 方法结束(从 ATL 库中调用),parent==null

要创建和显示 OOo::DocWindow,我需要父窗口的 HWND。

问题来了:

我能以某种方式在 ActiveX ie 扩展中嵌入基于 WTL 窗口的应用程序吗?
是否可以不重写整个 OOo Api 包装器?

最佳答案

是的,你可以。

使用 VS 向导的步骤:

  1. 创建 ATL 项目
  2. 添加 ATL 控件,基于某些控件(例如按钮)。在这种情况下,您将拥有带有一些处理程序的消息映射。

然后将 CContainedWindow 成员替换为您自己的窗口即可。

ATL Samples page ,我没有检查它,但希望它有所帮助。

关于c++ - 在 ATL ActiveX 控件中嵌入 WTL App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2583177/

相关文章:

c++ - WinRT/Metro 风格应用程序中基于 ATL 的 COM 对象

c++ - 如何将使用 MFC 的类添加到 ATL 项目中?

c++ - 在 QTableWidget 中动态添加一行

Python 命令退出,代码为 9009

c++ - 在 Linux 上构建 boost

c++ - C1189 : #error : WINDOWS. H 已经包括在内。 MFC 应用程序不得#include <windows.h>

c++ - QPushButton 打开 QWidget

VB6 Activex组件无法创建对象

c++ - 如何在 Visual C++ 中创建 ActiveX DLL

Javascript 到 ActiveX 变量类型