作为跨平台文本编辑器Sublime Text 2的爱好者,我一直在研究如何开发它。开发人员已经注意到,它是99%的c++,带有一些用于Linux的GTK,并且它使用他称为“Sublime GUI”的自定义UI工具包。这是开发人员的报价



我的问题是,跨平台抽象层有哪些选择?我认为这是低于GTK,QT,SDL的级别。我试图弄清楚如何创建一个跨平台且只需要编写一次代码的自定义UI工具包。

我很欣赏UI工具包的好处,但是如果我想动手,并且希望在Windows,Linux,Mac上获得对我的应用程序的支持,那么我不确定该从哪里开始。

最佳答案

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

如我所见,有两种绘制方法:

  • 创建OpenGL上下文,并使用OpenGL绘制窗口小部件。像glui一样。
  • 使用 native 绘图基础结构。就像Windows上的GDI+一样,X11上的XLib一样。

  • 当然,您需要为每个平台实现某些功能。使用OpenGL,您需要为每个平台编写上下文(WGL,GLX,..)处理,而使用 native 绘图基础结构,则需要做更多的工作。由于所有绘图基础结构都是唯一的,因此您可能想为绘图编写一个抽象,然后在绘图抽象层中实现小部件。

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

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

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

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

    10-05 23:01
    查看更多