关于创建自己的GUI库的书籍

时间:2013-12-18 10:50:55

标签: wpf winforms qt opengl graphics

我经常通过WinForms,WPF和Qt为自己的程序创建GUI,但对我来说理解如何创建类似的平台很有意思。我想了解原理,看一下简单的代码示例(C,C ++,C#或Common Lisp)。

平台,类似的Qt如何与操作系统交互以创建图形界面?

我试图找到有关此信息的书籍或网站,但我一无所获。任何人都可以帮我链接?

我感兴趣的是如何创建不是现有库的包装器的库。这样的库(不是包装器)应该以某种方式与操作系统交互,接收和发送不同的信号(通过鼠标点击,点击键盘键,重命定鼠标,点击热键等)。我想了解如何在没有包装器的情况下自己解决这些问题。

P.S。注意:我不问如何使用WinForms,WPF或Qt(它是其他的)。

1 个答案:

答案 0 :(得分:1)

这样的“平台”(实际上是:应用程序开发框架)就像大多数其他软件一样,逐步创建。你从小开始成长,经常在你走的时候破坏东西。当然,所有软件都是如此:)

但更严重的是,没有“如何”。 “如何”是成为优秀软件开发人员所需要的一切,并且包含广泛认可的软件工程实践。这些确实是应用程序开发框架。 “GUI”这个词显然缺席。用户界面只是这种框架的一个方面。例如。 Qt用于某些信用卡处理服务器代码。没有GUI。

您没有找到关于此的“书籍”或“网站”,因为您太具体了。您想要关于软件工程实践的“书籍”或“网站”:如何成为一名优秀的软件工程师。有很多这些,涉及软件工程的各个方面:接口设计(API),可靠性,测试,用户体验和可用性,性能的各个方面,现代GPU编程,您选择的操作系统公开的接口(说WINAPI)等等。这些是您正在寻找的书籍的主题。

如果你想从各种框架的开发中获得特定的轶事,那么周围有很多 - 只是google。您还可以查看源代码以了解它是如何完成的。但是,确实没有关于Qt内部架构的书籍。他们几乎没用了。

不想要包装器是一个傻瓜的差事,因为你没有准确指定你想要停止的级别。回想一下,现在很多“包装器”都是作为操作系统的一部分提供的(WINAPI,glibc / POSIX层,.Net,WPF,Cocoa)。

如果你想要一些真正没有针对包装器运行的东西,你需要为CPU编写微代码。在它上面只有多层包装。 CPU真正运行其微码,然后解释更高级别的指令集,表示内核的机器代码,由多层用户土地代码调用。名义上没有人编程到内核(那些是NT平台上的内核调用,Unices上的系统调用),正如你所暗示的那样。您已经在使用包装器:广泛采用的WINAPI是内核接口的一个相当大的包装器,就像C和POSIX / UNIX库一样。如果你看一下WINE代码库,大部分是实现WINAPI功能,而不是NTDLL(内核接口)。

如果你想在Windows上编写NT内核接口代码,你需要Windows Internals,但没有人真正用它来开发高级框架,因为它没有意义。所以包装好了。

现在人们认识到包装器与我们有关是有原因的,显而易见的问题是:为什么你随意选择一个特定的包装层作为停止点。编码到WINAPI比编码到Qt或Carbon ......更好!