初学者如何编写 Windows GUI 程序的综合教程
Posted
技术标签:
【中文标题】初学者如何编写 Windows GUI 程序的综合教程【英文标题】:Comprehensive tutorial for beginners on how to write Windows GUI programs 【发布时间】:2011-04-13 04:51:22 【问题描述】:我正在尝试学习如何使用 Visual Studio 2008 用 C++ 编写 Windows GUI* 程序,但我还没有找到更全面的初学者教程。
我找到的更全面的教程要么只是关于如何制作按钮、菜单等,要么只是关于如何编写基本的 C++ 控制台程序。
我还没有找到更全面的初学者教程,介绍如何将按钮、菜单等与 C++ 代码结合起来。
换句话说,我正在寻找以下问题的答案:如何将菜单、按钮等链接到 C++ 代码?
如果您知道我在哪里可以找到该问题的答案,请在此处发布!
注意:“图形用户界面 (GUI):包括图标、面板和交互式窗口等内容,使用户能够通过单击鼠标执行打开文件和创建应用程序等操作”(intoweb.co.za/et-linux-tips.html) .
我目前正在阅读techotopia.com 的 C# 教程,其中似乎不仅包括 C# 基础知识,还包括有关如何使用 C# 获取按钮、菜单的有用信息。等实际做某事。不过,我才开始阅读教程,所以我还不知道它到底有多大用处。
我现在已经阅读了techotopia.com 上的 C# 教程,并了解了一些关于如何实际使 Windows 窗体上的控件执行某些操作的基本事实。如果我更早知道我现在对 C# 的了解,我很可能会在开始学习 C++ 之前选择学习该语言。
为什么每个针对初学者的 C++ GUI 程序教程的编写风格都与techotopia.com 的教程不同。我看不出为什么初学者的 C++ GUI 程序教程不能既塞满基本事实,又向像我这样的人解释最简单的事情,这需要这样的解释来理解一个新主题。嗯,大概有这样的教程,只是我没有找到。
我认为,现在是时候列出一个简短的清单,列出我为获得今天的计算机技能而采取的步骤,尤其是计算机技能和编写计算机程序的能力。我在这里发布列表是为了那些想要擅长编写计算机程序但不知道如何实现该目标或误导自己的人的利益,因为我一次又一次地这样做。无论如何,这不是最终名单。这只是对我有用的东西的简短说明。
第 1 步。使用大量计算机程序(文字处理器、图像编辑器以及您感兴趣的其他程序),看看可以用计算机做什么。
第 2 步。使用 HTML 和 CSS 编写网页。 HTML,超文本标记语言,用于告诉浏览器诸如段落的开头和结尾、表格的结构以及包含图像的位置。 CSS,即层叠样式表,用于向网页添加文本大小和背景颜色等内容。
第 3 步。使用 php 改进您的网页。 PHP,超文本预处理器,让人想起 C# 和 C++,是一种服务器端脚本语言。服务器端意味着在将网页发送到访问者的浏览器之前对网页进行了某些操作,例如添加可以发送消息的代码。对于初学者来说,PHP 比 C# 和 C++ 更容易。另外,如果您已经编写了一些 HTML 页面,您可以逐渐将 PHP 添加到这些页面中。换句话说,您可以学习如何在熟悉的环境中使用 PHP。
第 4 步。学习 C#。提醒 PHP 和 C++。对于初学者来说比 PHP 更难,但比 C++ 更容易。这就是我现在的位置。这些链接至少有一些用处:
Quick And Dirty Guide To Migrating PHP Code To C# C# Station C# Tutorial 关于如何编写控制台程序 dotnetperls.com George Shepherd's Windows Forms FAQ C# Corner csharp-examples.net/examples(非常短的代码 sn-ps) Visual C# 在 msdn.microsoft.com 上(当你不再是一个绝对的初学者时可能更有用;至少我是这么认为的) Some basic C# tutorials(由我编写,不是你能找到的最好的教程;但是,当我第一次开始学习 C# 时,我会发现一个类似的页面很有用)第 5 步。学习 C++。提醒 PHP 和 C#。对于初学者来说比 PHP 和 C# 更难。允许程序员控制的不仅仅是 C#。有人说它比 C# 快,而其他人则不然。这就是我希望在一年左右的时间内到达的地方。
由于有多少初出茅庐的程序员,道路就有多少,这些步骤可能不适合你。不过,希望上面的列表在您决定采取哪些步骤来实现目标时至少对您有所帮助。
如果您比我更了解编程并且不同意上面的列表,请随时提供您自己的列表。如果你这样做了,我认为你还应该解释为什么你认为你的列表更好。
【问题讨论】:
当您说“Windows 窗体”时,您指的是 .NET,对吗?如果是这种情况,您应该重新标记您的问题“c++-cli”。 我不知道。正如我所说,我是初学者。 “Windows 窗体”是指按钮、菜单等,您可以单击它们并获得响应,例如将 textarea 中的所有文本设置为大写或保存文件。我想学习如何用 C++ 做这些事情。 Windows Forms 是围绕标准 Windows UI 的 .NET 包装器。如果您不在 .NET 中工作,您通常会改用 Win32 API 和 GDI。 (或者如果您使用的是 Vista/Win7,则可能是 Direct2D,这取决于您的需要) 我不明白上面的评论。请解释!不仅是为了我的利益,也是为了其他初出茅庐的程序员在不知道“Win32 API”和“Direct2D”等词的含义的情况下来到这个页面。 【参考方案1】:Charles Petzold 就此写了一本书。
我没看过,但是他的Win32 UI书是众所周知的搞笑,所以对初学者来说应该不错。
【讨论】:
AFAIK,Petzold 用 C 和 C++ 写了关于本机 Windows API 的文章,以及用 C# 写了一本关于 Windows 窗体的单独书,但没有一本书将两者结合起来。这是 OP 观察到的。 我不想买书。我已经买了很多电脑书,要么太简单,要么太难。我正在寻找在线教程。 您可以在亚马逊上以低于 20 美元的价格购买二手 Petzold 书籍。考虑到大量信息,这是一种偷窃行为。有一次我和你一样——我一直在寻找关于用原生 C 构建 Windows GUI 的教程。我终于掌握了“Programming Windows”,这就是我一直在寻找的东西。 嗯,正如我所说,我已经购买了几本计算机书籍,包括几本关于 C++ 的书籍,但我发现其中任何一本都没有用。这可能是因为我学习速度很慢,需要零碎的信息,就像在教程中一样,当我学习一个新主题而不是一次学习很多,就像从一本书中一样。不过,我还没有买过 Petzold 的任何书,所以我会去看看,因为你推荐它。标题是什么?顺便说一句。 Charles Petzold 的“Windows 编程”。【参考方案2】:您可能已经从其他答案和 cmets 中看出,术语“Windows 窗体”是特定 .NET 技术的名称。
您似乎想问更多关于如何学习编写具有 GUI(菜单、按钮、窗口等)的 Windows 程序的问题。
没有单一的方法可以编写 Windows 程序。 C++ 本身对 Windows 一无所知。相反,您最终会使用一些 API 或框架。所以你需要做的是选择你想要使用的特定的,然后学习它。
在最低级别是原始的 视窗 API。然而它是一个非常 类似 C 的界面,很少有人会 建议从那里开始。 Microsoft 用于构建 Windows 程序的基于 C++ 的框架是 MFC(Microsoft 基础类)。它是在 .NET 和 C++/CLI 等之前创建的。太老了,它的某些方面无法与时俱进,所以有些人不喜欢它。但它仍然受到支持和使用。事实上,如果您有 Visual Studio 的完整版(不是快速版),那么您已经可以使用 MFC。 最近出现了各种其他 C++ 框架。 Qt 和 WxWidgets 是两个比较大的名字。其中许多不仅为您提供了一种创建 Windows 程序的方法,而且还尝试抽象出所有特定于操作系统的细节,以便您的代码也可以编译为在其他操作系统(如 Linux 或 Mac)上工作。在我看来,一旦你学会了如何使用,这些通常比使用 MFC 更愉快。 尽管这不是您想要的,但实际上很多人会推荐使用 C# 和 .NET 在 Windows 中制作 GUI 程序。该语言和框架有一些很好的方面使 GUI 编程更容易。因此,您可能需要进行一些调查,以确定您真正想要学习和使用的技术。然后你就可以去寻找合适的教程了。
【讨论】:
感谢 cmets!我不知道“Windows 窗体”是特定 .NET 技术的名称。您有根据的猜测是我想学习如何编写具有 GUI 的 Windows 程序是正确的。我知道 C++ 对 Windows 一无所知,我需要使用一些 API 或框架。我什至知道你提到的其他技术(Windows API、MFC、.NET、C++/CLI、Qt、WxWidgets、C#)。 我已经阅读了几篇关于 C++ 的教程,并且在使用 Visual Studio 2008 制作表单方面积累了很多经验。问题是我还没有为初学者找到任何更全面的教程来介绍如何将 C++ 代码与表格。这就是我要找的。span> 我记得我想使用 C++ 的原因是它应该比 C# 更快。我还记得我已经检查了 C++、C# 和其他计算机语言的几个基准测试,根据这些基准测试,C++ 是目前最快的计算机语言(除了汇编,但我不打算学习)。跨度> @matsolof 好吧,将 C++ 代码与实际 GUI 连接的方式在每个框架中都不同。通常它涉及从框架提供的某种“Window”类派生,但每个类的细节都不同。任何教程都将特定于该框架,否则不会非常有用。所以这就是为什么我说你首先需要决定你将使用哪种技术。 @matsolof 如果这是您特别关心的问题,那么了解文件活动密集型程序的性能将受到磁盘活动的“约束”,而不是运行程序的速度,这很有用。而且我会加倍关注其他人的 cmets——C++ 是你可能希望在某个时候学习的东西(我会推荐它),但不要学习它,因为“它更快”——一般来说,它不是以任何有意义的方式更快。您可能最终会进入它,因为您想尝试一些特定领域的代码:游戏或图形或音频处理或其他东西,您可以选择较少的语言。【参考方案3】:一个有点旧的线程,但可以说是更新后的 Petzold 替换: 《Windows系统编程(第4版)(Addison-Wesley微软技术系列)》
【讨论】:
以上是关于初学者如何编写 Windows GUI 程序的综合教程的主要内容,如果未能解决你的问题,请参考以下文章