1

就像 qT、wxwidgets 等工具包一样,API 设计器如何提供和 API 相同的 API,即使它调用完全不同的系统调用来做到这一点?例如,在 Windows 操作系统中,您必须处理 GDI 中的一大堆函数。在 Linux 上,您必须处理 XLib 中的大量功能以及该发行版之上的任何其他层。那么如何设计一个可以统一所有这些功能的 widgit 工具包?所以说 CreateWindow() 会在任何平台上创建一个windon?我不明白如何做到这一点。

4

1 回答 1

1

您可以使用更通用的东西,而不是使用 Xlib 或 GDI。例如,您可以使用到处都支持的 OpenGL。我认为这就是 Blender 的 UI 所做的。

一些工具包可以修改为对它们支持的每个平台使用某种后端。这基本上就是 Qt 所做的。在 Mac OS X 上,Qt 应用程序使用 Cocoa 作为后端。Qt for OS X 是专门为那个操作系统制作的。但是,其他平台上还有其他 Qt 实现,这就是 Qt 在多个平台上工作的原因。SWT for Java 的工作方式相同(使用操作系统的本机工具包作为后端)。

其他工具包可以使用某种高级层进行渲染。例如,Swing for Java 纯粹使用 Java API 呈现,根本不依赖于任何平台。

于 2012-10-09T10:45:51.030 回答