【发布时间】:2009-02-14 05:34:12
【问题描述】:
我计划将我现有的应用程序变成RTD server。
该应用程序目前是用 C++ 编写的,虽然我最终会将它移植到 C#/Mono,但我希望能够使用 C++ 添加 RTD 功能。
我找到了一些示例代码(MSVCRTDServer)和这个站点:http://weblogs.asp.net/kennykerr/archive/2008/10/29/excel-rtd-server-in-c.aspx
不幸的是,这些是 DLL,而且我很久以前就忘记了我所知道的所有 COM(告别)。
如何将 DLL 示例合并到 EXE 中?这显然是将 COM 服务器封装在 EXE 而不是 DLL 中。
编辑:
请注意,现有应用程序具有 MFC GUI。
编辑:
预期用途是运行现有的 GUI 应用程序 - 无需 COM/RTD 接口的客户端启动应用程序。 (虽然我不会否认那会很好)
基本上,我想用我自己的数据实现 IRTDServer 接口——以便 Excel(或其他应用程序)可以访问应用程序提供的动态数据。 (这是一个与串行端口设备对话的程序 - 该设备的状态/状态会发生变化,我希望能够异步更新客户端的变化)
所以,我需要创建一个 COM 对象并注册它,以便客户可以“看到”它。
我不确定如何将 COM 对象添加到 exe 并让该 COM 对象实现现有/预定义的接口。
编辑 我为此开始了赏金,所以我可以获得代码示例。显然,我太懒惰和愚蠢(或者可能只是对 COM 的过度厌恶),无法开始使用 Franci Penov 的现有答案。 (这非常有用,也是一个很好的开始)
所以基本上我正在寻找的是:
将我现有的基于对话框的 MFC 应用程序用于运行一堆线程并将其转换为 RTD 服务器(具有相同的 UI)的代码
所有的 cocreate 和 CoThisandthat 等等。我在哪里把这些代码放在我的 exe 中?如何扩展/实现 IRTD 的东西?
一个示例 MFC hello world 应用程序(基于对话框)的前后将得到公认的答案。
- 在应用程序之前包含 mfc 对话框应用程序的所有源代码。
- “after”应用程序基于步骤 #1 中的 MFC 应用程序,实现 RTD srver 接口及其所有源。 (所有项目文件、源代码等)
- 在 GUI/Visual Studio 中执行的步骤,以及从步骤 1 创建步骤 2 的其他步骤。 (创建了 IDL 等其他文件。)
理想情况下这是为 VS2008 提供的,但任何版本都可以使用。
谢谢。
【问题讨论】: