【问题标题】:WinForms or WPF or Qt for Windows GUI with C/C++ as backend适用于 Windows GUI 的 WinForms 或 WPF 或 Qt,以 C/C++ 作为后端
【发布时间】:2009-08-28 10:32:57
【问题描述】:

我要在 Windows 上开发一个应用程序。我以前从未这样做过;-)

我需要做一些繁重的音频计算,必须用 C/C++ 编写。这部分将是一个房间校正算法,目前在 Matlab 中运行每个通道大约需要 10 秒。它必须用 C/C++ 编写,因为它以后可能会被移植到 DSP,而 DSP 必须用 C/C++ 编程。

此外,我需要一个 GUI 来查看计算、可视化结果和修改计算参数。这个 GUI 的难点在于大量绘制频谱、频谱图、音频波形等。

现在,我听说 WPF 在 Windows GUI 中风靡一时,但似乎仅限于 C#。有没有一种简单的方法可以将我的 C/C++ 代码与一些 C# GUI 代码集成?还是我应该使用 WinForms 并用 C++ 编写整个内容?还是 Qt 也能正常工作并“免费”提供一些跨平台功能?

我在 C/C++、Matlab 和 VST 开发方面有一些经验,但我从未编写过真正的应用程序,老实说,我什至不知道从哪里开始。

提前谢谢你!

【问题讨论】:

  • 对于 C++ Qt 是最好的 GUI 工具包。

标签: c# c++ wpf winforms qt


【解决方案1】:

我认为使用 WPF 或 WinForms 的最大缺点是您必须使用两种编程语言进行编程,这是一个很大的后勤开销。

我以前见过这种类型的论点:使用 C 或 C++ 表示低级别,使用其他方法表示高级别。在这种情况下,Qt/C++ 与 WPF/WinForms 一样高级,其优点是 UI 与其他 C++ 代码的集成非常容易。

有关频谱图和其他图表,请查看Qwt

P.S:WPF 在 Windows 上并不是风靡一时,事实上市场相当分散,而 WPF 是使用较少的 GUI 工具包之一。大部分代码使用 MFC、WTL、Delphi、Win32 等。

【讨论】:

    【解决方案2】:

    我对 QT 没有经验,但我可以说 WPF 很好,但它对于 CPU 密集型应用程序来说不是那么好,而且你将无法轻松地将你的 c/c++ 与 WPF 直接集成。

    会有巨大的学习曲线,您将不得不编写 COM 接口来与 C#/WPF 和您的本机代码进行通信。或 Visual C++ .Net CLI,这是相当困难的并且可用的教程较少。

    但问题是你不会得到任何好的支持,因为很多人只使用 C#,数据库应用程序只使用 WPF/WinForms。最好的办法是,您可以编写 COM DLL 来与 WPF 集成,但这会很困难。

    相反,现在 MFC 中提供了各种工具,并且还有许多其他商业库可用于在 C++ MFC 中编写良好的 UI,由于您对 C++ 更熟悉,因此集成会非常容易。

    或者 Qt,如果你已经知道的话。

    图书馆:

    Prof-UIS

    BCGSoft

    可能有很多,你可以搜索“MFC UI Elements”、Library 等。我在 2003-4 年使用过 Prof-UIS,它们很好。

    【讨论】:

    • 那会是什么库?
    【解决方案3】:

    WPF 会将您绑定到 Windows,但不会绑定到任何特定的语言。您可以使用 C#、VB.NET、托管 C++ 或任何其他 .NET 语言编写 WPF 应用程序。

    Winforms 与 Windows 类似,但您可以编写应用程序,使其也可以在 Mono 上运行,因此是跨平台的。但是,在复杂的可视化方面,Winforms 工具包的功能要差得多。

    .NET 和本机应用程序之间的互操作性非常强,但它肯定会给您带来至少一点痛苦。另一方面,在原生环境中实现接口可能会让您更加痛苦。

    如果您对将 GUI 绑定到 Windows 和 .NET 感到满意,那么 WPF 是高度可视化应用程序的最佳选择。如果您不想依赖 .NET 或 Windows,Qt 似乎是您唯一的选择。

    【讨论】:

    • 我不会说它的功能要差得多。使用 OwnerDrawn 您可以创建一些非常奇妙的 GUI。我们老学生使用 WF/API 已经很长时间了。我已经制作了一些漂亮的图形 UI,可以与“普通”WPF 编码器所提供的内容相媲美。另外,我真的很讨厌 HT/X-ML,在所有它的化身中,它在真正的编程中没有位置,imo。
    猜你喜欢
    • 2011-06-04
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多