Linux编程:给GTK程序添加任务栏图标

今天在写 Linux 下的 Gappproxy 图形界面,运行后发现,任务栏是难看得 DOS 默认图标,很难看,上网搜了一下,如何添加任务栏图标,现在将代码转换过来,做点小解释吧。

#include <gtk/gtk.h>
GdkPixbuf *create_pixbuf(const gchar * filename)
{
   GdkPixbuf *pixbuf;
   GError *error = NULL;
   pixbuf = gdk_pixbuf_new_from_file(filename, &error);
   if(!pixbuf) {
      fprintf(stderr, "%sn", error->message);
      g_error_free(error);
   }
   return pixbuf;
}
int main( int argc, char *argv[])
{
  GtkWidget *window;
  gtk_init(&argc, &argv);
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window), "icon");
  gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("web.png"));
  gtk_widget_show(window);
  g_signal_connect_swapped(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);
  gtk_main();
  return 0;
}

上面的就是为一个填加上图标的窗口程序了

gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("web.png"));

函数gtk_window_set_icon() 是为窗口设置图标用的。函数 create_pixbuf() 作用是从一个png图象文件中生成 GdkPixbuf 类型数据。

pixbuf = gdk_pixbuf_new_from_file(filename, &error);

根据官方公布的文档说明,函数 gdk_pixbuf_new_from_file() 一个文件中加载图象数据,从而生成一个新的 pixbuf。 至于文件中包含图象的格式,是由系统自动检测的。如果该函数返回值是NULL的话,程序就会出现错误。

顺便晒一下我写得gappproxy图形界面。刚刚开始写,还没完整。

2010090201.jpg

{ 发表评论? }

  1. BoKeam

    一片茫然。

  2. 乐衣网

    是啊,惭愧!咱也看不懂哟

  3. icyomik
      • icyomik

        这个就是吖,我见你说要添加这个功能,就顺便给你了,当时我是找Python tray icon的时候找到的,费了不少时间找到这个满意的,其中也有C的版本~哈~

        • icyomik

          其实我看到全英文,直接跳到代码处看了~

  4. cellsea

    顶。
    不过,你确定你能编译通过吗? 我编译的时候报错了,undefined reference to “gdk_pixbuf_new_from_file_utf8″,能告诉我下怎么解决啊?!

  5. cellsea

    我今天中午解决了。这个是因为我使用code::blocks,没有link file造成的。已经编译通过了,呵呵。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>