Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在ATL ActiveX控件中嵌入WTL应用程序_C++_Activex_Atl_Openoffice.org_Wtl - Fatal编程技术网

C++ 在ATL ActiveX控件中嵌入WTL应用程序

C++ 在ATL ActiveX控件中嵌入WTL应用程序,c++,activex,atl,openoffice.org,wtl,C++,Activex,Atl,Openoffice.org,Wtl,有没有办法在ATL ActiveX(ie扩展)中嵌入WTL destop应用程序 我试图实现的是使用office文件查看器创建ActiveX控件。 作为基础,我有一个桌面WTL应用程序(不久前编写),它使用OOOv3API来显示文档 我已经创建了一个ActiveX项目,链接了必要的lib和includes 我可以调用WTL和OOAPI方法 添加了一些属性和方法以满足主机应用程序的要求 我的ActiveX在ie和主机应用程序中正确显示 我的运气(和知识?)就这样结束了 我的控件具有m_hwnd

有没有办法在ATL ActiveX(ie扩展)中嵌入WTL destop应用程序

我试图实现的是使用office文件查看器创建ActiveX控件。 作为基础,我有一个桌面WTL应用程序(不久前编写),它使用OOOv3API来显示文档

  • 我已经创建了一个ActiveX项目,链接了必要的lib和includes
  • 我可以调用WTL和OOAPI方法
  • 添加了一些属性和方法以满足主机应用程序的要求
  • 我的ActiveX在ie和主机应用程序中正确显示
我的运气(和知识?)就这样结束了

我的控件具有m_hwnd属性,但它始终设置为0; 我在谷歌上搜索了一下,发现我可以用

this->m_spInPlaceSite->GetWindow()
但它也不起作用。每次我想创建一个窗口时,运行时都会在IsWindow()方法(从ATL lib中调用)中结束,父项==null

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

问题是:

我可以在ActiveX ie扩展中嵌入基于WTL窗口的应用程序吗?
是否可以不重新编写整个OOOAPI包装器?

是的,您可以

使用VS向导的步骤:

  • 创建ATL项目
  • 基于某些控件(例如按钮)添加ATL控件。在本例中,您将拥有带有一些处理程序的消息映射
  • 然后将CContainedWindow成员替换到您自己的窗口,仅此而已


    ,我没有检查它,但希望它有帮助。

    在编译过程中转换消息映射时仍然显示一些错误,但现在我知道要搜索什么。谢谢