【问题标题】:Windows GUI Programming - C + SDK or C# + Windows FormsWindows GUI 编程 - C + SDK 或 C# + Windows 窗体
【发布时间】:2009-05-19 00:49:11
【问题描述】:

我是一名 C 程序员,有很多服务器代码经验(AIX、HPUX、一些 Linux)我需要为 Windows(2000、XP、Vista、7)编写一个 GUI 程序,它需要类似 CAD 的绘图功能和大量数据输入表格(这是一个专门的工程应用程序)。多年前,我使用 Gupta SQLwindows(现在的 Centura Builder)编写了一些 Win32 代码。老板们已经下令它“必须”编译代码。我的看法是 C+SDK 可以完成这项工作,但需要付出相当大的努力,而且 C# + Windows Forms 会更有能力,但我有点担心 .Net 框架要求。

根据您的经验,您有什么建议?

如果是 .Net,哪个版本? 2.0, 3.0, 3.5 ??

【问题讨论】:

  • 感谢所有回复的人。你们的 cmets 照亮了前进的道路。目前正在研究 WPF 和 Windows 窗体。我觉得后者更清楚一些。我还不太确定 XAML。感谢 Jay Michaud 的详细回复。

标签: windows user-interface


【解决方案1】:

我不熟悉 Centura Builder,因此我不确定您之前的 Windows 编程经验处于什么抽象级别。如果您选择使用 C/C++ 和 Win32 的本机代码路线,请务必购买 Charles Petzold 的 Programming Windows 副本。阅读本书的前几章可以帮助你决定是否也想走原生代码路线。

如果您选择 .NET Framework 和 C#,并且不需要 3.5 版特有的功能(例如用于数据库访问的 LINQ),我建议选择 3.0 版。它是 Windows Vista 上的内置组件,因此您不必将运行时与程序安装程序一起打包,除非您必须支持 Windows XP(您可能会这样做,所以没关系:)。在 3.0 版中,您获得了 Windows Presentation Foundation(用于代替 Windows 窗体或与 Windows 窗体一起使用),它为您提供了许多图形功能,而无需付出很多努力。我不懂CAD,所以不知道WPF能否提供你需要的绘图功能,但它可能提供了一个很好的平台,你可以在上面编写自己的绘图例程。

编辑:我在初读时错过了您的 Windows 版本要求,尤其是 Windows 2000 要求。我猜您必须使用 .NET Framework 2.0 版和 Windows 窗体。不过,我不得不问:通过将他们使用了 8 年的机器升级到更新、更快的机器从而摆脱 Windows 2000 支持要求来提高工程师的工作效率,难道不符合成本效益吗?

【讨论】:

  • 如果我理解正确的情况,我可以要求 XP 是最低支持的版本。此外,.Net 3.0 似乎可以为 XP 配置。拿起几本关于 Windows 窗体和 WPF 的 Apres 书籍并深入研究示例。
【解决方案2】:

如果您要使用 .NET 路线,则必须使用 .NET 2.0,因为 .NET 3.0 及更高版本仅支持 Windows XP 及更高版本(Vista、7、2003、2008)。

我个人不会为 .NET 框架要求而烦恼。这是在每台机器上一次性安装,如果需要,可以通过 Windows 更新进行简化。

【讨论】:

    【解决方案3】:

    如果你不想要 .NET,Qt + C++ 绝对是你要走的路;它肯定胜过 C 和 Win32。 .NET 仍然允许比 Qt 更快的开发。 Qt 的优点是部署快速且易于部署(无需 .NET),并且使可移植性更加容易(如果您想移植到 Linux 或 Mac)。

    【讨论】:

      【解决方案4】:

      如果您必须使用本机代码,那么我强烈建议您使用 Codegear / Embarcadero 的 RAD Studio,如果您已经熟悉的话,它是一个工作室产品,附带 Delphi(从 Turbo Pascal 演变而来的面向对象语言)和 C++ Builder如果使用 C/C++,那么您将非常非常轻松上手。两种语言共享的可视化组件库是可扩展的、强大的和 RAD 的。

      如果您能够使用托管代码,那么带有 Winforms 的 C# 很容易使用,从长远来看,WPF 可能是更好的 UI 选择,但它的学习曲线更陡峭。

      【讨论】:

        【解决方案5】:

        根据类 CAD 绘图的复杂性要求,我会使用 C# + Windows 窗体,甚至更可取的是 C# + WPF。

        WPF 会使绘图比在 GDI 中进行绘制要干净得多。如果您要进行一些 3D“绘图”,则尤其如此,因为您可以直接在 WPF 中制作大量(简单)3D 对象。 C# 将使您的 GUI 编程比直接使用 Windows API(甚至 MFC)在 C/C++ 中进行更有效率。

        就我个人而言,我认为 .NET 要求是最低限度的,但这实际上取决于您组织中的权力...

        【讨论】:

        • WPF 需要 .NET 3.0,它需要 WinXP 或更高版本,因此将 WPF 排除在外(因为 OP 需要 Windows 2000 支持)。
        【解决方案6】:

        如果它必须编译代码,我会推荐 MFC 的 WTL,但使用 C# + WinForms 或 WPF 会更快(在开发成本方面)。

        【讨论】:

        • 请注意,除了类似的 API 之外,WTL 与 MFC 没有任何关系或依赖关系。因此,如果您选择 WTL,那么您将不会依赖于 C+Win32 API。 -- 你仍然应该使用 .NET UI 框架 :)
        【解决方案7】:

        您可以使用 C 或 C++/Win32 api
        做任何事情 (类似 CAD 绘图的 Win32 示例在 MSDN 中..)

        【讨论】:

          猜你喜欢
          • 2015-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-23
          • 1970-01-01
          相关资源
          最近更新 更多