我需要用C / C ++编写一个小应用程序来实现一个面板任务栏,就像在桌面窗口顶部显示信息一样(特别是Linux系统上的xorg桌面)。我需要为GUI编程避免膨胀和陡峭的学习曲线。
我的研究指向GTK + / GTKmm或FLTK。看起来FLTK可能更容易掌握并且最有可能提供具有最小依赖性的小型干净包。所以到目前为止,我的研究基于FLTK。
我一直在做一些阅读,并且正在努力寻找如何编写一个基本程序,该程序将创建一个狭窄的未修饰窗口,覆盖监视器的宽度,以最大化其他应用程序不会模糊它。到目前为止我发现的FLTK教程(包括FLTK文档)只实现了带边框的标准窗口,可以在屏幕上移动。
我想首先在FLTK(或GTK + / GTKmm)中编写一个简单的程序,该程序在包含“hello world”消息的屏幕上创建一个20像素的深度条。栏的区域将保留在其他程序可以访问的区域之外,以便最大化另一个应用程序不会隐藏“hello world”消息。我认为这与WM_STRUT_PARTIAL属性有关,但我在FLTK中找不到相关信息。
这样做部分是为了理解如何编写一个简单的GUI程序,部分是为了解决我的特定需求。
我正在寻找任何帮助/指导,让我正确的方向开始。非常感谢。
答案 0 :(得分:0)
如果您真的希望托盘栏小程序基于FLTK,则必须将其“嵌入”(GNOME)小程序中。很久以前我和SDL应用程序做了类似的事情,但我恐怕忘了怎么做了。我想到的第一件事就是以某种方式从GNOME applet中获取XID并以某种方式将其传递给它的FLTK部分,然后让FLTK完成其余的工作......
当然,您可以使用其他桌面,例如KDE或i3或IceWM,它们都有自己处理托盘栏的方式(没有标准) !)所以,原谅我的“法国人” - 它将成为支持所有环境的PITA ......
如果我在GNOME,我会完全使用GNOME / GTK编写applet。在这种情况下忘记FLTK。这是我的建议。如果您定位KDE,那么使用KDE / QT库(等离子小部件将是要查找的内容)。
但是,如果您仍想使用FLTK,请从fltk::draw_into()函数(在FLTK 1.x中可能称为fl_draw_into()),fltk :: xid()和相关函数开始。