本来打算研究一下libindicate,后来发觉自己搞不懂。于是去搞system tray。这个东西在windows上叫notification area。
在gtk里,用GtkStatusIcon来创建一个可爱的系统托盘图标!
代码如下:
#include <stdio.h> #include <gtk/gtk.h> void cb_login() { printf("cb_login\n"); } void cb_logout() { printf("cb_logout\n"); } void cb_log() { printf("cb_log\n"); } void cb_exit() { gtk_main_quit(); } GtkWidget *menu; void init_menu() { menu = gtk_menu_new(); GtkWidget *item; item = gtk_menu_item_new_with_label("登录"); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(cb_login), NULL); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); item = gtk_menu_item_new_with_label("注销"); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(cb_logout), NULL); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); /* 可爱的分割线 */ item = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); item = gtk_menu_item_new_with_label("日志"); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(cb_log), NULL); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); /* 可爱的分割线 */ item = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(cb_exit), NULL); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); } void show_menu(GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer pos) { gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, button, activate_time); gtk_widget_show_all(GTK_WIDGET(menu)); } int main(int argc, char **argv) { gtk_init(&argc, &argv); GtkStatusIcon* status_icon = gtk_status_icon_new_from_file("cmcclogin.png"); if(!status_icon){ fprintf(stderr, "failed to load icon file.\n" ); return 1; } gtk_status_icon_set_tooltip(status_icon, "CMCC Login"); gtk_status_icon_set_visible(status_icon, (gboolean)TRUE); init_menu(); g_signal_connect(G_OBJECT(status_icon), "popup_menu", G_CALLBACK(show_menu), status_icon); gtk_main(); return 0; }
gtk这个强大东西感觉很简单,很容易上手,基本不需要学习什么原理,你只需要有一个api手册,就大概知道如何使用了。我没有任何关于gtk的教程和书籍,也没有时间去学,但我看了一段gtk的示例代码之后,我觉得我已经知道如何写gtk程序了。不知道其他人是否也有同样感受!
gtk的代码看起来很可爱,对比起来,mfc那些是多么的丑陋。不要抱怨它的函数名很长,其实那样很自然,你一看就知道这个函数是干什么的了。哈哈!!!
终于有沙发啦!
GTK+,哈哈。。只是我觉得它写起来有点干体力活的味道,,别的都好,还有至今我还不会做皮肤^_^
PS:搞成黑色干啥?以前的风格不是很好吗?
的确,GObject写一个类真是累人。
支持长函数名,一眼就猜出来它大概什么滴干活。
@lianjiefly:反色也不错!!!想玩一下,有空再改过来。
很好看!
于我而言,背景是黑色的切换到别的页面(大部分都是白色吧)发差太多,眼睛会刺痛的。
@vanxining:嗯,黑白反差很强烈!!!
不错,支持