【问题标题】:Extending legacy C++ Windows app with WinForms使用 WinForms 扩展旧版 C++ Windows 应用程序
【发布时间】:2011-03-06 15:35:39
【问题描述】:

我正在开发一个旧版 C++ 应用程序,该应用程序可在 Intermec 制造的坚固型商务移动设备上运行。我需要添加一些功能并想使用 WinForms 构建它。这个想法是用户可以单击旧应用程序中的一个按钮,该按钮将启动一个 WinForms 屏幕。然后他们做一些事情,点击 OK 并返回到 C++ 应用程序。

问题是,我能否以某种方式将 Winforms 应用程序“嵌入”到 C++ 应用程序中,以便我可以将 Winforms 作为模式对话框打开并在两个应用程序之间传递信息。

非常感谢您的帮助。

干杯

标记

【问题讨论】:

  • 是否可以改写遗留应用程序?
  • @Andrew:重写整个应用程序只是为了在 WinForms 中获得一个对话框,这对我来说似乎是严重的矫枉过正。 @Mark:C++ 的东西是用什么写的?视觉 C++?
  • 是的,但如果应用程序倾向于进一步开发,可能会支持遗留 + .net 部分集成将更加矫枉过正。
  • 感谢安德鲁的评论。是的,这是最终目标,但需要很长时间。我们希望逐步做到这一点,如果这两个应用程序可以一起运行而不会给用户带来太多麻烦,那就太好了。
  • Codeka - 是的,它是 Visual C++,目前使用 VS2005 维护。

标签: c# c++ winforms windows-mobile


【解决方案1】:

首先让我们明确一点,紧凑的框架不是完整的框架,因此很多可以在桌面上运行的东西对你有用。

您实际上只有一种选择,尽管有很多不同的方法可以使用一种选择。由于 Compact Framework 不支持 EE 托管(即在本机应用程序中加载 CLR),因此运行托管代码的唯一选择是编写和执行托管应用程序。期间。

现在,正如我所说,您可以选择如何进行此操作。例如,您可以在启动 MFC 应用程序时启动该应用程序,并让它在没有表单的情况下运行,然后使用某种形式的 IPC(point to point queues 可能最有意义,但memory-mapped file 也可能有用)和然后让应用程序相互“交谈”。因此,您的 C++ 应用程序可以发送一条消息“显示表单 A”,当表单 A 关闭时,托管应用程序可以发回数据。

【讨论】:

  • 非常感谢 ctacke!我没有机会查看其他建议,但我怀疑是这种情况。你为我节省了很多时间:)
【解决方案2】:

VS2005 有MFC and WinForms Integration Demo。希望对你有帮助

【讨论】:

  • 酷 - 谢谢。我会调查的。第一个问题是Windows Mobile下是否支持这个东西。
  • CF中不支持,所以不要花太多循环看。
【解决方案3】:

是的,您可以使用 CCW(COM 可调用包装器)在此处阅读更多内容:- http://www.codeproject.com/KB/atl/ComWarpperForDotNet.aspx

【讨论】:

  • 这行不通。您不能在 CF 中创建托管 COM 组件。
猜你喜欢
  • 2015-04-10
  • 2015-02-13
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多