0

我需要用 C/C++ 编写一个小应用程序来实现一个面板任务栏,比如在桌面窗口(特别是 Linux 系统上的 xorg 桌面)顶部显示信息。我需要避免 GUI 编程的臃肿和陡峭的学习曲线。

我的研究指向 GTK+/GTKmm 或 FLTK。看起来 FLTK 可能更容易掌握,并且最有可能提供一个具有最小依赖性的小型干净包。所以到目前为止,我的研究都是基于 FLTK 的。

我一直在做一些阅读,并且正在努力找出如何编写一个基本程序,该程序将创建一个狭窄的未装饰窗口,该窗口以最大化其他应用程序不会掩盖它的方式覆盖监视器的宽度。到目前为止,我发现的 FLTK 教程(包括 FLTK 文档)仅实现了带有可在屏幕上移动的边框的标准窗口。

我想首先在 FLTK(或 GTK+/GTKmm)中编写一个简单的程序,该程序在屏幕上创建一个 20 像素深的条,其中包含“hello world”消息。该栏的区域将保留在其他程序可以访问的区域之外,以便最大化另一个应用程序不会隐藏“hello world”消息。我认为这与 WM_STRUT_PARTIAL 属性有关,但我在 FLTK 中找不到有关此的信息。

这样做部分是为了了解如何编写一个简单的 GUI 程序,部分是为了解决我的特定需求。

我正在寻找任何帮助/指导,让我朝着正确的方向开始。非常感谢。

4

1 回答 1

0

starfry,我相信这不是一项简单的任务。问题是您的桌面(例如 GNOME2/Metacity)保留了该空间,并将其面板绘制在您想要放置栏的区域。-

如果您真的希望您的托盘栏小程序基于FLTK,则您必须将其“嵌入”到(GNOME)小程序中。很久以前我用 SDL 应用程序做过类似的事情,但我怕我忘了怎么做。我想到的第一件事是使用某种方式从 GNOME 小程序中获取 XID,并以某种方式将其传递给它的 FLTK 部分,然后让 FLTK 完成剩下的工作......

当然,您可以使用其他桌面,例如KDEi3IceWM,它们都有自己处理托盘栏的方式(没有标准!)所以,请原谅我的“法语”-它将是支持所有环境的 PITA...

如果我在GNOME上,我会完全使用 GNOME/GTK 编写小程序。在这种情况下忘记 FLTK。这是我的建议。如果您以 KDE 为目标,则使用 KDE/QT 库来执行此操作(要寻找 Plasma 小部件)。

但是,如果您仍然想使用 FLTK,请从fltk::draw_into()函数(在 FLTK 1.x 中可能称为 fl_draw_into())、fltk::xid() 和相关函数开始。

于 2011-11-02T09:30:11.483 回答