Windows GUI编程 – C + SDK或C#+ Windows窗体

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

根据你的经验,你会build议什么?

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

我对Centura Builder并不熟悉,所以我不确定在以前的Windows编程经验的抽象层次上。 如果您选择使用C / C ++和Win32的本地代码路由,请确保购买由Charles Petzold 编程的Windows副本。 阅读本书的前几章可以帮助您决定是否要使用本地代码路由。

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

编辑:我错过了你的Windows版本的要求,一读,特别是Windows 2000的要求。 我想你将不得不与.NET Framework 2.0版和Windows窗体。 但是我必须问:为了提高工程师的工作效率,将8年前的机器升级到更新更快的速度,从而摆脱Windows 2000的支持要求,是不是经济划算?

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

我个人不会出汗.NET框架的要求。 在每台机器上安装一次,如果需要,可以通过Windows更新简化。

如果你不需要.NET,Qt + C ++肯定是要走的路。 它肯定会击败C和Win32。 尽管如此,.NET仍然允许比Qt更快的开发。 Qt具有快速和易于部署的优点(无.NET要求),并使得可移植性(如果要移植到Linux或Mac)更容易。

如果你必须使用本地代码,那么我强烈建议Codegear / Embarcadero公司的RAD Studio ,如果你已经熟悉C / C ++的话,它是一个工作室产品,附带Delphi(从Turbo Pascal演变而来的面向对象语言)和C ++ Builder那么你会容易的把它拿起来。 这两种语言共享的可视化组件库是可扩展的,强大的和RAD。

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

根据类似CAD的绘图的复杂性要求,我会使用C#+ Windows窗体,或者更优选的是使用C#+ WPF。

WPF将使得绘图更加清晰,比在GDI中做得更干净。 如果你要做一些3D“绘图”,尤其如此,因为你可以直接在WPF中做很多(简单的)3D对象。 C#将使您的GUI编程更加高效,而不是直接在C / C ++中使用Windows API(甚至是MFC)来完成。

就我个人而言,我个人认为.NET的要求是微不足道的,但是这真的取决于你的组织的能力。

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

你可以用C或C ++ / Win32 api来做所有的事情
(用于CAD绘图的Win32示例在MSDN中)