COM 包装器可以创建为单独的 DLL,也可以与 ObjectARX 应用程序结合使用。单独的 DLL 允许系统更有效地管理资源;它可以在不需要 COM 对象时释放它们,即使无法卸载 ObjectARX 应用程序也是如此。如果您打算仅支持进程内客户端,则组合 DLL 可能很方便。在任一情况下,都可以使用 Microsoft Visual C++ ATL 项目设置界面来简化该过程。以下各节提供了适用于这两种类型的包装器的过程:
为 COM 包装器设置项目
此过程为包装器应用程序设置基本 COM 框架,包括对象的 IDL 文件和 DLL 外壳。 在下一过程中,您将添加一个新接口。Microsoft Visual C++ 创建一个框架接口定义及其相应的 COM 类。稍后,可以向此接口添加方法和属性。 向项目添加 COM 对象和接口
以下过程将项目配置为使用 AutoCAD 自动化。 配置 ATL 项目以用于 AutoCAD 自动化界面的步骤
仅当将 ObjectARX 代码与 COM 包装器组合在一起时,才执行下一个过程。 将现有 ObjectARX 应用程序合并到 ATL 项目中
acrxEntryPoint PRIVATE acrxGetApiVersion PRIVATE 在函数中,添加一个调用 case 块,如下所示。(如果您确定服务器已注册,则不需要此步骤。acrxEntryPoint()DllRegisterServerkInitAppMsg case AcRx::kInitAppMsg: //unlock the application acrxDynamicLinker->unlockApplication(pkt); acrxRegisterAppMDIAware(pkt); //register ourselves DllRegisterServer(); break; 如果在 () 函数中发生其他初始化或清理,请将此初始化移至 your。acrxEntryPointDllMain 注意:在 AutoCAD 2000 或更高版本中,AutoCAD 会尝试调用由标准 AutoCAD 机制加载的任何 ObjectARX 应用程序。因此,将初始化代码放入其中是安全的。但是,将 ObjectARX 应用程序与 COM 服务器组合在一起的已注册 DLL 可以由 AutoCAD 本身或 Windows COM 子系统加载。如果 COM 加载应用程序,则仅调用。因此,通常最好在 中执行 ObjectARX 初始化。DllMainDllMainDllMain
DllMain
从“生成”菜单中选择“全部重建”以生成组合的 COM 包装器 DLL 文件。 |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:41
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.