|
楼主 |
发表于 2003-8-4 20:35:49
|
显示全部楼层
Linux_Lyb
多謝回?汀
第一个问题:一言驚醒,問題不在這裡,現附上一圖,菜單上出現”文件”中文字是由這句作用
rootmenu = gtk_menu_item_new_with_label(”文件”);
但是,menuitem 要如何顯示中文字形,如書中圖呢?
eg.
menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_CUT, accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu), menuitem);
g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(on_menu_activate), (gpointer)("剪切"));
// (gpointer)("Cut"));
第二个问题:
整個榴案是這樣的:
/* 創建選單的快捷方法 itemfact.c */
#include <gtk/gtk.h>
void on_menu_activate (GtkMenuItem *item, gpointer data); //回調函數聲明
static GtkItemFactoryEntry menu_items[] = { //定義選單集
{"/ 文件 (_F) ", NULL, NULL, 0, "<Branch>"},
{"/ 文件 (_F) /新建", NULL, on_menu_activate, "新建", "<StockItem>", GTK_STOCK_NEW},
{"/ 文件 (_F) /打開", NULL, on_menu_activate, "打開", "<StockItem>", GTK_STOCK_OPEN},
{"/ 文件 (_F) /儲存", NULL, on_menu_activate, "儲存", "<StockItem>", GTK_STOCK_SAVE},
{"/ 文件 (_F) /另儲存為", NULL, on_menu_activate, "另儲存為", "<StockItem>", GTK_STOCK_SAVE_AS},
{"/ 文件 (_F) /-", NULL, NULL, 0, "<Separator>"},
{"/ 文件 (_F) /離開", NULL, on_menu_activate, "離開", "<StockItem>", GTK_STOCK_QUIT},
{"/ 編輯 (_E) ", NULL, NULL, 0, "<Branch>"},
{"/ 編輯 (_E) /剪下", NULL, on_menu_activate, "剪下", "<StockItem>", GTK_STOCK_CUT},
{"/ 編輯 (_E) /複製", NULL, on_menu_activate, "複製", "<StockItem>", GTK_STOCK_COPY},
{"/ 編輯 (_E) /貼上", NULL, on_menu_activate, "貼上", "<StockItem>", GTK_STOCK_PASTE},
{"/ 編輯 (_E) /搜尋", NULL, on_menu_activate, "搜尋", "<StockItem>", GTK_STOCK_FIND},
{"/ 幫助 (_H) ", NULL, NULL, 0, "<LastBranch>"},
{"/ 幫助 (_H) /幫助", NULL, on_menu_activate, "幫助", "<StockItem>", GTK_STOCK_HELP},
{"/ 幫助 (_H) /關於...", NULL, on_menu_activate, "關於", NULL}
};
void on_menu_activate (GtkMenuItem* item, gpointer data) {
//g_print("選單項目");
//g_print(" %s ", (gchar*)data);
//g_print("被激活\n");
g_print("Menu item %s is pressed.\n", (gchar*)data);
}
//主函數
int main(int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *box;
GtkWidget *menubar;
GtkWidget *menu;
GtkAccelGroup *accel_group;
GtkItemFactory *item_factory;
gint n = 15;
gtk_init(&argc, &argv);/* 關鍵,如果不寫這行,有時會出問題 */
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "添加選單的快捷方法");
g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
accel_group = gtk_accel_group_new();
box = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(window), box);
gtk_widget_show(box);
item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<menu>", accel_group);
gtk_item_factory_create_items(item_factory, n, menu_items, NULL);
gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
menubar = gtk_item_factory_get_widget(item_factory, "<main>");
gtk_box_pack_start(GTK_BOX(box), menubar, FALSE, FALSE, 0);
gtk_widget_show(menubar);
gtk_widget_show(window);
gtk_main();
return FALSE;
}
多多指教!! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|