gpt4 book ai didi

c++ custom UI ToolKit -- 跨平台抽象层的选项

转载 作者:可可西里 更新时间:2023-11-01 17:51:44 25 4
gpt4 key购买 nike

作为跨平台文本编辑器 Sublime Text 2 的粉丝,我一直在研究它的开发方式。开发人员注意到它是 99% 的 c++ 和一些用于 linux 的 GTK,并且它使用他称之为“Sublime GUI”的自定义 UI 工具包。这是来自开发者的引述

Sublime Text 2 itself uses a custom UI toolkit. There are a lot of apps where this may not make sense, but it's not such an unreasonable choice for Sublime Text, where I always knew that a lot of the UI controls were going to have to be custom no matter the toolkit (e.g., the text control and tab controls). The UI toolkit sits on top of a cross platform abstraction layer, which is more a union of platform functionality rather than lowest common denominator.

我的问题是,跨平台抽象层有哪些选项?我认为这是比 GTK、QT、SDL 更低的水平。我正在尝试弄清楚如何创建一个跨平台且只需编写一次代码的自定义 UI 工具包。

我很欣赏 UI 工具包的好处,但如果我想亲自动手并在 Windows、Linux、Mac 上支持我的应用程序,我不确定从哪里开始。

最佳答案

我想最重要的问题是如何绘制和获取键盘和鼠标事件。

据我所知,有两种绘图方法:

  1. 创建 OpenGL 上下文并使用 OpenGL 绘制小部件。喜欢glui .
  2. 使用原生绘图基础设施。喜欢GDI+在 window 上,XLib在 X11 上。

当然,您需要为每个平台实现某些功能。使用 OpenGL,您需要为每个平台编写上下文(WGL、GLX、..)处理,而使用 native 绘图基础结构,您需要做更多的工作。由于所有绘图基础设施都是独一无二的,您可能希望为绘图编写一个抽象,然后使用您的绘图抽象层实现您的小部件。

至于事件处理,我认为您还需要编写自己的抽象,因为每个平台的事件处理都是唯一的。

最后,您还应该有一个抽象层,用于创建您在其中绘制小部件并从中获取事件的主窗口。

使用 OpenGL 时,您可以从 glut 开始,它已经处理了窗口创建和事件处理。

请记住,我从来没有实现过这样的事情。但是,我可能会尝试 OpenGL 方法,因为我相信实现目标的工作量较小。

关于c++ custom UI ToolKit -- 跨平台抽象层的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com