作为跨平台文本编辑器Sublime Text 2的爱好者,我一直在研究如何开发它。开发人员已经注意到,它是99%的c++,带有一些用于Linux的GTK,并且它使用他称为“Sublime GUI”的自定义UI工具包。这是开发人员的报价
我的问题是,跨平台抽象层有哪些选择?我认为这是低于GTK,QT,SDL的级别。我试图弄清楚如何创建一个跨平台且只需要编写一次代码的自定义UI工具包。
我很欣赏UI工具包的好处,但是如果我想动手,并且希望在Windows,Linux,Mac上获得对我的应用程序的支持,那么我不确定该从哪里开始。
最佳答案
我猜最重要的问题是如何绘制和获取键盘和鼠标事件。
如我所见,有两种绘制方法:
当然,您需要为每个平台实现某些功能。使用OpenGL,您需要为每个平台编写上下文(WGL,GLX,..)处理,而使用 native 绘图基础结构,则需要做更多的工作。由于所有绘图基础结构都是唯一的,因此您可能想为绘图编写一个抽象,然后在绘图抽象层中实现小部件。
至于事件处理,我认为您还需要编写自己的抽象,因为事件处理对于每个平台都是唯一的。
最后,您还应该具有一个抽象层,用于创建在其中绘制小部件并从中获取事件的主窗口。
使用OpenGL时,您可以从glut开始,它已经处理了窗口创建和事件处理。
请记住,我从来没有实现过这样的事情。但是,我可能会尝试使用OpenGL方法,因为我认为达成目标的工作量较小。