在Win32 C++中创建GUI界面

3
我正在开发我的第一个Windows桌面应用程序,我正在试图找出创建程序GUI的最佳方法。
我知道,我知道......考虑到SO上有关此主题的数据量,我感到很愚蠢。但是,大多数答案似乎已过时,我不确定它们是否适合我的特定项目。此外,Windows 8“Metro应用程序”的教程正在阻塞我的Google搜索结果,这不是我要找的。
我使用Visual Studio。我已经按照教程做了一些基础知识。我具备C和Java的基本知识以及PHP的丰富经验。我很兴奋学习C ++,因此我不需要像WinForms这样的GUI来创建GUI。我现在也不关心托管代码和可移植性,特别是因为我试图避免依赖项(即用户必须安装.NET)。只要它在Vista及以上版本上运行流畅,我就很高兴。
应用程序
该软件将向儿童教授基础物理知识。我想创建一个主区域和一个侧边栏。主要区域将显示物理动画,例如反弹的球,以及一些问答。用户可以放大动画以测量某些内容并回答问题。用户可以在侧边栏中跟踪他们的进度。就这样。
迄今为止我发现了什么
我对MSDN有点失望。他们的大多数示例都以四种不同的语言(C#,C ++等)给出。我似乎无法从中获得更多的代码。
我在MSDN上找到了GDI API,它似乎是一个很好的起点。但是,我已经阅读了一些SO答案,说在纯C ++中创建布局非常困难,我们最好使用像ATL和WTL这样的框架。由于我还将创建(有些交互式)动画,因此我想知道是否应该使用面向游戏的API,例如Direct2D。
由于所有这些对我来说都是新的,并且有很多选项,我不知道从哪里开始处理我的特定应用程序。任何提示将不胜感激!

使用GDI创建GUI听起来像是浪费时间。即使你不使用MFC、WPF或类似的东西,你也可以在VS中以可视化方式构建你的UI。 - undefined
我不会完全避免使用.Net。C#比C++容易学得多,而且.Net v3.0已经随Vista一起发布了。 - undefined
1
感谢你的参与,Michael。我不敢使用GUI来创建GUI。我忘了提到我之前用Xcode的Storyboard创建过iOS应用程序,结果把代码搞得一团糟。最后我还是更喜欢单独编写GUI界面。 - undefined
谢谢,彼得。我会再仔细看看C#。考虑到我的背景,我觉得学习这两种语言都不会太难。 - undefined
@Robbert 要用我的话来解释Scott Meyers(如果你选择学习C++的话,我推荐你阅读他的书)的观点,“C++是由四种独立语言组合而成的”。因此,不要低估学好C++所需的努力。 - undefined
5个回答

9

使用原始的Win32 API(无需下载或第三方帮助程序):

这是一个很好的入门指南(介绍了对话框、文本框、按钮等):theForger's Win32 API Tutorial

然后,您可以查看这个页面(数字上下文、列表框、组合框、工具提示等):MSDN 上的常用控件。大部分需要您 #include <commctrl.h>

我还发现这是一个很好的资源,涵盖了其他两个没有涵盖的内容:Win32 Developer - 窗口资源

但是,Win32 API似乎不能完全满足您的要求。儿童物理应用程序应该比API提供更加视觉化的GUI。祝您好运!


谢谢,Proxy。这正是我一开始想要的 - 关于原始的Win32 GUI内容。我一定会阅读那些文章的。但就像你说的,这可能对物理部分没有什么帮助。 - undefined

3
如果您可以添加其他框架,我建议看一下Qt。它允许仅从代码创建GUI,具有良好的结构,并且如果需要,还具有2D绘图接口。如果您担心依赖项,您只需将Qt DLL包含到您的可执行文件中即可,用户不需要安装。

我确实担心Qt会像.NET应用程序一样需要双重设置。谢谢你解释清楚了。 - undefined
在我的Qt应用程序中,我直接在我为应用程序创建的NSIS安装程序中安装Qt和MSVC运行时,根据我构建应用程序所使用的Visual Studio版本。我的用户无需自己下载或安装额外的软件包。安装Qt部分只涉及将一些Qt dll复制到应用程序的bin文件夹中。MSVC运行时需要执行适当的Visual Studio运行时安装程序。 - undefined
Qt有一个与OpenGL的接口,因此可以支持任何2D或3D应用程序。但我建议您查看示例,可能会有更简单的方法来实现您想要做的功能。 - undefined
有趣的东西。现在我想知道为什么.NET应用程序没有将.NET安装程序包含在其安装程序中。 - undefined
有道理。无论如何,谢谢Matthias。考虑到我项目中的2D动画方面,我认为Qt会为我提供一个坚实的起点。将此标记为最佳答案。 - undefined
显示剩余2条评论

0

使用Windows API是最简单的方法,但是制作高级GUI可能需要很长时间。Microsoft Foundation Class是一种使Windows API更加用户友好和面向对象的方式。有人有MFC的经验吗?


0

要开始学习,请参考我的(旧版)教程"Windows API编程课程"

但是你真的需要一本好书,比如查尔斯·佩特索德的经典著作《Programming Windows》的第5版或更早的版本。

最新版本的问题在于它是针对C#和.NET的,查尔斯在错误的时间抓住了“新方法”的尾巴...


免责声明:我还没有检查版本号的详细信息。

谢谢你的快速回复,Alf。我一直在查找书籍,但就像你说的,很多新书都是关于C#/.NET的,而旧书对我来说似乎已经过时了。我一定会研究一下你的建议。 - undefined

-1

我喜欢这里的向后兼容性。谢谢你的建议。我猜我一开始就想对了,我需要一个2D游戏引擎。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接