问题 使用C ++的WPF,有可能吗?


我有我在C ++中的主程序,但现在我需要构建一个漂亮的应用程序,我知道WPF很简单,并且可以创建漂亮的应用程序。 WPF可以使用C ++,C#和C ++吗? (如果是,怎么样?)WPF对我来说是最好的吗?


4322
2018-06-21 15:09


起源

这对于当前的Windows无法帮助您,但看起来W8将为花哨的GUI提供良好的本机C ++支持: arstechnica.com/microsoft/news/2011/06/... - gbjbaanb


答案:


您可以在托管C ++项目中使用WPF,但最好将C ++保存在单独的程序集中并从C#或VB WPF项目引用它。


14
2018-06-21 15:12



谢谢您的回答。我有点像菜鸟:)所以我怎么能这么容易呢?你有一个很好的教程或者你能说我怎么做因为我在C#和WPF中找到了很多教程但是我找不到C ++和WPF的东西。 - Nazka
没有关于C ++和WPF的任何教程,因为WPF是现代的,并且使用像C#这样的现代语言更好。所以,就像我说的,使用C#创建WPF用户界面,然后引用你的C ++程序集。这是一个如何使用它的例子 DllImport: dotnetperls.com/dllimport - Tim Rogers
所以我应该使用Visual2010在C ++中创建一个类库项目,以创建我的DLL并在我的第二个C#应用程序中使用这个DLL?而已?或者不是这种项目可能适用于C ++? - Nazka
C ++中的类库项目将创建一个 托管C ++ DLL。 DllImport将使用现有的 本地人 C ++。这取决于你的代码。确保首先了解托管和本机C ++之间的区别。 - Tim Rogers


是的,您可以使用WPF框架开发GUI 管理 C +或C ++ / CLI。但它们不是标准C ++,因此不是跨平台的。

如果您只想为使用C ++编写的应用程序使用GUI,那么您可以尝试 Qt的 同样。 Qt的优势在于它完全采用C ++。不是Microsoft托管C ++。第二个优势是其跨平台工具包。这意味着,您可以在Windows,Linux,Mac和其他计算机上运行您的应用程序。

看看它的文档

它有很多快速开发的工具,比如 Qt CreatorQt设计师 和别的。您可以通过浏览上述链接查看所有这些内容。


5
2018-06-21 15:18



Qt可以创建快速图表吗?我正在开发一个金融应用程序,所以我的图表将有5k的点和线,所以流畅的东西会很甜蜜。 :) - Nazka
@Nazka:相信我,Qt会比WPF更快地创建图表。 - Nawaz
@Nazka:只需下载工具包,它的尺寸非常小;不会花太多时间下载。下载并查看工具包本身附带的演示示例。他们非常漂亮和酷。 - Nawaz
Qt Creator和Qt Designer听起来不错。 :)我的主要问题远远不够,但是在Qt中很容易构建一个带有字符串列表的选项栏?编辑:是的我会尝试Qt - Nazka
@Nazka:Qt是一个非常成熟的工具包。你可以用它做任何事情。而且,它很容易。它甚至还有像WPF这样的声明性语言。所以一切都变得非常简单,开发可以非常快。 - Nawaz


WPF和Silverlight一起死了,记住,MS从现在开始说它的HTML5 :)

在C ++应用程序中使用WPF可以使用 hwndSource,但它不是最佳解决方案,因为您必须创建C#或VB.NET GUI应用程序,并使用它通过某种形式的IPC与您的C ++应用程序进行通信。

有替代方案,最好的方法是使用编写GUI Qt的,这是非常受尊重的。您可以通过编写来获得与WPF类似的功能 QML 与旧的基于表单的系统一起(这意味着您可以获得使用旧的,枯燥的文本框等的所有开发速度,以及使用新的声明性UI系统的奇特GUI优势,所有这些都在同一系统中。甜蜜)。

当然,一个不错的选择是让您的应用程序进入后端服务器进程并从基于Web服务器的HTML5 UI调用它。这是非常好的未来证明,易于部署到客户端,并且您可能会获得现代化。


-3
2018-06-21 15:32



在您的上一个解决方案中,目标是建立一个网站?还是网络服务?在我的C ++应用程序和网站之间建立接口的最佳工具是什么? (只是一个很棒的数据库与mySql可能会?) - Nazka
WPF + SL死了吗?请引用你的消息来源,因为此时这只是一个丑陋的谣言。如果您只是投影,请不要将其视为事实。 - djdanlib
@djdanlib:这是一个谣言,你会被建议继续听,因为它并非完全没有根据。这是今天的分期付款: i-programmer.info/news/81-web-general/... 烟雾的问题在于它下方经常会发生火灾。这可能不是真的,但这并不意味着你可以完全忽略它。 - gbjbaanb
@Nazka:一个网站 - 不在网络服务器中运行其服务器端代码的网站。一个网站只是另一个应用程序,其中gui位于浏览器中而不是直接运行。您需要能够以某种方式从某些Web服务器代码调用C ++应用程序中的方法,但这可能是任何东西 - 套接字,RPC,命令行甚至 - 但它需要一种方法来公开客户端可以调用的方法。 - gbjbaanb
我一直在密切关注它,而且微软没有说过这样的事实 - 事实上,他们说的恰恰相反。您需要看看微软服务器和工具部门总裁: team.silverlight.net/announcement/pdc-and-silverlight   - 但如果你想进一步观察,请尝试Scott Guthrie: weblogs.asp.net/scottgu/archive/2010/11/04/... ......让我们都同意自己关注这个问题,所以我们不会讨论并让事情变得偏离主题。 - djdanlib