我可以从同一项目中的另一个ATL简单对象访问ActiveX项目中的函数吗?
Can I access in ActiveX project functions from another ATL simple object in the same project?
我有一个ActiveX控件项目(.ocx),其中包含一个主控件类和其他几个ATL简单对象。主控类公开了许多函数;如果我可以在其他ATL对象中使用其中一些函数,那将是实用的。这可能吗?我是否必须实例化我的ActiveX控件在其导出的ATL对象之一(以及如何?),或者有另一种方式?
虽然你没有在你的问题中提到它,我假设你目前没有访问你想要创建的对象的接口/协类声明。
如果你想使用的控件有一个与它关联的应用程序ID,你可以使用#import
指令将接口和类型定义直接拉入你的c++源文件。例如,如果应用程序ID是"Library"。MainObject"你可以在
#import "progid:Library.MainObject"
这将直接访问对象类型库。如果它没有与之关联的应用程序ID,那么您可能需要执行一些额外的步骤。获取类型库的一种方法是使用Visual Studio附带的OLE Object Viewer实用程序。在对象查看器中找到它后,可以将类型库保存为文件。如果您在对象查看器中找不到它,您可以尝试直接打开OCX模块,如果它包含类型库,您可以将其导出到文件。一旦你有了类型库,你就可以使用#import
来拉入声明。
#import "typelibraryname.tlb"
一旦你有访问声明,你可以调用CoCreateInstance
就像你会对任何其他COM对象。您可以使用__uuidof(typename)来获取接口或协类的GUID。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 欧拉项目#8答案是大以获得有效答案
- 从链接列表c++中删除一个项目
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 既然存在危险,为什么项目要使用-I include开关
- cmake在我的项目中所需的所有静态库都不成功
- QT通过C++添加映射QML项目
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在linux上调试巨大的C++项目
- 在其他文件中创建类时在 c++ 项目中不起作用
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 如何在ATL项目中使用ActiveX DLL
- 如何在 win32 中使用 ActiveX dll C++项目 Visual Studio 2010
- 我可以从同一项目中的另一个ATL简单对象访问ActiveX项目中的函数吗?
- 在DLL项目(ActiveX)中使用Boost