我已经用Visual Studio 2010使用标准的C++编写了一个应用程序的所有代码。
我想使用.NET创建GUI,这可行吗? 谢谢!
我已经用Visual Studio 2010使用标准的C++编写了一个应用程序的所有代码。
我想使用.NET创建GUI,这可行吗? 谢谢!
是的,这正是Expression Studio的工作方式,它是一个用于WPF的GUI编辑工具。您可以使用类似的方法,并通过P/Invoke将所有功能暴露给在.NET中的GUI应用程序。
尽可能保持UI尽可能简单。此外,如果您发现C++和C#应用程序之间有大量联系点,则需要考虑使用C++/CLI作为它们之间的粘合层。 C++/CLI不是编写整个UI的最佳编程语言,但它可以作为C#前端和C++后端之间非常好的中间层。
有很多选择,以下是我能想到的几个:
将C++代码封装在Windows DLL中, 使用p/invoke从.NET调用C++代码。
将C++代码封装在COM对象中, .NET可以直接使用COM对象。
将C++代码封装在某种类型的 托管C++包装器(C++/CLI)中,在.NET GUI中加载和使用该新程序集。
一些更奇特的想法:
使用某种类型的进程间通信, 例如套接字。您的C++代码必须在另一个 进程中运行。我猜您也可以将C++代码制作成Web服务。
在命令行上运行C++代码, 由.NET GUI启动。通过命令行参数传递参数, 捕获并解析来自C++程序的标准输出文本,返回到.NET应用程序中。
编辑: 我建议使用DLL和p/invoke。 COM对象相比于普通的dll在传递更复杂的类型和公开对象模型方面具有优势,但是创建和安装/注册COM对象很痛苦(即使使用ATL、清单文件等)。对于许多项目而言,使用C++/CLI似乎总是更复杂,但如果其他选项变得过于限制,则学习一些关于它的知识是值得的。