关于创建自己的 GUI 库的书籍 [关闭]

Posted

技术标签:

【中文标题】关于创建自己的 GUI 库的书籍 [关闭]【英文标题】:The books about creating of the own GUI libraries [closed] 【发布时间】:2013-12-18 10:50:55 【问题描述】:

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

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

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

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

附:注意:我不问怎么用WinForms,WPF,或者Qt(是其他的)。

【问题讨论】:

那么你想找到关于他们如何制作 Qt 等的书籍吗? Qt的创建可以看成是一个样例...我想了解创建此类库的原理。 您考虑过 Google 吗?此外,在您发布更多问题之前,您应该阅读help/tour,因为您的问题不符合要求。 我当然在找。如果您对我的问题有具体的答复,那么我会很高兴。如果没有响应,就没有写的意义。 堆栈溢出是代码问题的站点,而不是工具/书籍推荐。但是我认为这个问题不值得反对。 【参考方案1】:

与大多数其他软件一样,此类“平台”(实际上是:应用程序开发框架)是逐步创建的。你从小处着手,不断成长,在进行过程中经常会破坏一些东西。当然,所有软件都是如此:)

更严重的是,没有“如何”。 “如何”是成为一名优秀软件开发人员所需的一切,并且包含了广泛考虑的软件工程实践。这些确实是应用程序开发框架。 “GUI”这个词明显没有。用户界面只是此类框架的一个方面。例如。 Qt 用于一些信用卡处理服务器代码。没有图形用户界面。

您找不到关于此的“书籍”或“网站”,因为您太具体了。您想要关于软件工程实践的“书籍”或“网站”:如何成为一名优秀的软件工程师。其中有很多,涉及软件工程的各个方面:接口 (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 编码要好得多...

【讨论】:

我想阅读有关指定主题的信息,以便更好地了解它是如何“在屏幕后面”工作的。这对我来说很有趣。这不是犯罪。对我来说,如何创建不是现有库的包装器的库对我来说很有趣。此类库(不是包装器)应以某种方式与操作系统交互,接收和发送不同的信号(通过鼠标单击、单击键盘键、重新定位鼠标、单击热键等)。我想了解如何在不使用包装器的情况下自己解决这些问题。 我完全同意布什的观点。此答案不会尝试回答问题。 致 Clemens, b__, datenwolf, genpfault, Florent:这个话题对我来说很有趣。如果你不明白我问了什么,这不是关闭这个话题的理由。 @Bush:我确实试图回答这个问题。你想做什么根本不具体。一般的软件工程实践适用于它。没有什么更具体的,因为您正在设计一个应用程序框架。很多软件工程都是关于为不太常用而设计的框架,但本质上就是这样。 @Bush:所以我已经准确地告诉了你需要阅读的内容。阅读深入研究的软件工程书籍,我引用自己的话接口 (API) 设计、可靠性、测试、用户体验和可用性、性能的各个方面、现代 GPU 编程。有太多要列出的内容,但这就是您想要阅读的内容。

以上是关于关于创建自己的 GUI 库的书籍 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

你最好的 Swing 设计模式和技巧是啥? [关闭]

使用 Adob​​e 的“亚当和夏娃”C++ GUI 库的经验?

从 Web 应用程序 GUI 创建数据库备份 [关闭]

Flash 的 GUI 框架(as3)[关闭]

适用于 mac 的 Oracle gui 界面 [关闭]

荐书┃关于javascript的10本专业书籍推荐(从入门到精通)