哪里是开始编程用于Windows的图形用户界面的好地方?

我有使用C和C ++编写控制台和网络客户端/服务器应用程序的经验,但我几乎不知道如何使用win32可视化API,MFC,Qt,wxWidgets等。哪里是开始的好地方,我应该使用哪种方法专注于,以便将来做好准备和强大?

0

9 答案

我为Windows编写简单的GUI应用程序的第一次经历是使用C#和Visual Studio。 GUI构建界面是一个简单的拖放处理,可根据潜在的用户操作生成框架方法。我只做了相当基本的编程,但我想这将是一个很好的开始学习基础知识,并随着您的进展扩展到更高级的功能。

0
额外

我不知道我是否应该把它称为一个开始的好地方,但如果你想做好未来的准备,请看看 windows演示文稿基础,它完全是为Windows编程GUI的目的而构建的

0
额外

既然你已经熟悉C和C ++,我会推荐学习如何使用Charles Petzold的书来编写一个简单的Windows GUI应用程序。它会给你对Windows工作原理的基本理解。很好理解,你看到的大部分内容都是一个窗口(例如一个按钮就是一个窗口),而且这些窗口对消息作出响应。我不会在这上面花费很多时间,如果你打算选择WPF,你不一定需要这么做。我认为对此有一个基本的了解是很好的。

最近在.Net Rocks上播出了一段很棒的播客,名叫“凯特格雷戈里用C ++开发Vista! “,她建议现在开始的人不应该使用/学习MFC(即使它最近已经更新)。

至于为将来做好准备,你需要学习WPF,但它还没有完成,所以根据你想创建的客户端应用的类型,你可能需要学习WinForms。大多数人还没有使用WPF,所以现在是开始学习的好时机。我认为使用C#来学习它会更容易,而不是使用C ++来执行托管代码。

0
额外

对于商业应用程序,Windows Forms非常成熟。它提供了一条从自动生成的路径到允许细粒度控制并滚动自己的路径。有大量高质量的第三方控件和大量的示例,文档等。很难遇到别人没有解决的问题。我强烈建议在WinForms框架中使用一些背景知识(例如 Petzold )它的顶部。

我没有WPF经验,但是从我看到的示例应用程序来看,对于那些接口将从更多图形隐喻中受益的应用程序来说,这看起来是一个不错的选择。所以如果你正在做一个银行应用程序,可能不值得额外的设计开销。但是,如果你正在做一个仓库管理应用程序,可以通过将漂亮的盒子放入漂亮的箱子来改进它。

@StephenCox:错误的回答错误的问题。 OP在询问桌面客户端应用程序,而且WPF!= Silverlight。

0
额外

首先让你的基本知识。我找到的最佳教程是: http://winprog.org/tutorial/start.html

在那之后,尽管主页很讨厌,但教程页面的内容和美观性都很好: http:// www .tenouk.com / cplusmfcdotnet.html

当然,还有 MSDN

0
额外

我永远不会去Silverlight,Flash / Flex或任何类似的路线。它看起来不错,但主要问题是运行它的引擎的代码是完全封闭的,由单个公司控制。拿,例如,这两个64位版本。如果出现一些新的平台,您将无法将现有的代码迁移到它。

0
额外
封闭的箱子和单一公司根本不是问题。无论你在哪里工作,你仍然面临着无法将代码移植到其中的风险。不合理的FUD不是避免Silverlight或Flash的一个论据。
额外 作者 OJ.,

这是一个相当广泛的问题,因为Windows中的编程GUI应用程序可以通过很多方式完成。

开发任何GUI应用程序有两个主要部分:语言API /框架。考虑到你有兴趣学习构建Windows GUI应用程序,这种语言并不是真正关注你的重点。因此,您应该选择一种您已经知道的语言,并使用可以被您选择的语言利用的框架或API。

如果你想使用C,你几乎限于自己处理Win32 API,在这种情况下阅读 Petzold里奇特将是很好的开始。 Win32 API可能非常令人生畏,但非常值得学习(imho)。网络上的Win32上有很多教程,并且始终都有 MSDN ,其中有完整的参考资料/指南Win32 API。确保你不仅覆盖API,而且覆盖其他领域,比如资源/对话框,因为它们是你的Win32应用程序的构建块。

如果你想使用C ++,你可以使用C和其他几个选项。我建议直接使用Win32 API,然后转移到已知的框架,如MFC,Qt,wxWindows或GTK,这样您可以花更少的时间处理样板代码,而是专注于编写应用程序逻辑。我刚刚列出的最后3个选项具有跨平台的附加优势,因此您无需过多担心特定于平台的问题。既然你说你想要使用Windows的工作,我会假设你热切地关注着这不是跨平台的 - 所以用MFC去,但花一些时间与Win32 API的第一个获得与一些熟悉的这些概念。

在处理MFC和Win32 API时,最好在编写代码之前尝试并理解术语。例如,您需要了解消息泵的功能及其工作原理。您需要了解诸如“所有者绘制的控件”以及“ href =“http://msdn.microsoft.com/en-us/library/ms997565.aspx”rel =“noreferrer”>子类。当你理解了这些东西(以及更多)时,你会发现使用MFC更容易,因为它在类接口中使用了类似的术语(例如,在了解“翻译消息”的含义之前,你需要知道如何以及何时使用 PreTranslateMessage )。

您也可以使用Managed C ++来编写.NET GUI应用程序,但是我已经在几个地方看到了Managed C ++并非真正用于这种方式。相反,它应该用作本地/非托管代码和托管代码之间的网关。如果您使用.NET,最好使用.NET语言(如VB.NET或C#)来构建GUI。

因此,如果您要使用.NET,您目前可以选择 WinForms 库,或 wpf 。鉴于WPF旨在替代它,我个人觉得你会浪费时间学习构建WinForms应用程序。随着时间的推移,WPF将变得更加重要,Winforms很可能会死掉。 WPF具有更丰富的API集合,并且不会受到Winforms所具有的许多限制。但是,如果您选择此路线,则无疑需要学习 XAML ,它是驱动WPF应用程序的标记语言。这项技术已经成熟,并且有许多很好的地方可以了解它。首先,有一些网站,例如 LearnWPF ,以及 DrWPF ,里面有一些非常棒的文章。其次,大量。 com / amzn / click / 0596510373“rel =”noreferrer“> quality books 上的主题

所以,总而言之,一旦你选择了语言和技术,路径其实很简单。只需拿起一两本书,阅读一些博客,进入一些代码示例..最重要的是......编写代码。不断写作,不断犯错,并不断向他们学习。

最后说明......

换句话说,Silverlight。如果你不想走MS路线,你可以看看Adobe的Flash / Flex。 Silverlight和Flash / Flex都构建了RIA。我认为这是我们前进的方向。他们像Office应用程序的日子一样被编号

我完全不同意。 Silverlight和WPF不一样。 Silverlight是特定于Web的,只有WPF的一部分功能。鉴于该问题需要Windows GUI应用程序,Flash / Flex富互联网应用程序并不是真正合适的建议。我也不同意富客户端应用程序(例如办公室)的日子有编号。

我希望有所帮助。祝你好运 :)

0
额外
如果你想从C ++使用Win32 API,那么还有WTL。请参阅 wtl.sourceforge.net
额外 作者 Roger Lipscombe,
+1为Petzold和Ritcher。
额外 作者 David Sebastian,

为了让您了解“事件驱动”本质的一个简单起点,基本上所有的框架都是围绕着 FLTK 一>。

Here are some quick starting videos

Link

对于专业用途,我推荐Qt,价格昂贵,但在商业环境中经常值得。

0
额外

有很多在线的Win32教程:

http://www.zeusedit.com/forum/viewtopic.php?t= 1218

有很多编译器可供选择:

http://www.zeusedit.com/forum/viewtopic.php?t= 238个

我还建议以WinHelp文件格式获取 Borland Win32 SDK 文档:

http://www.zeusedit.com/forum/viewtopic.php?t= 7

它只涵盖了Win32的基础知识,但在启动时,这可能会有所帮助,因为它比MSDN更轻松,更臃肿。

0
额外