我有一些麻煩,把我的彈出菜單放在我想要的GTK(沿着與我的按鈕相同的Y軸,所以它似乎從按鈕下拉)。位置彈出式菜單下面的小工具GTK
當我在win32中編寫類似的東西時,我得到了它的工作,但對於我的生活,我無法得到這個東西來繪製我想要的地方!
我做我的研究,我知道(我認爲)應該工作,這是當我撥打電話到 gtk_menu_popup()
我應該在一個函數指針傳遞一種用於放置彈出式(鏈接到方法規範 - http://developer.gnome.org/gtk/2.24/GtkMenu.html#GtkMenuPositionFunc)
但我有點垃圾與函數指針(我有Kernighan和裏奇書旁邊,因爲我說),但我很確定我做對了。
繼承人我嘗試在方法:
void set_position(GtkMenu *menu,gint *x,gint *y,gboolean push_in,gpointer user_data)
{
printf("Help!\n";
GtkWidget *originButton = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(menu),"button");
gdk_window_get_position(originButton->window,x,y);
//now I realise this will place it at the top of the widget but thats acceptable for now, I just want the method to be called!
}
我做這個調用它從按鈕的處理程序:
static gboolean handler (GtkWidget *widget,GdkEvent *event)
{
GdkEventButton *bevent = (GdkEventButton *) event;
gtk_menu_popup(GTK_MENU(widget),NULL,NULL,set_position,bevent->button,bevent->button,bevent->time);
}
但是,當我編譯這個它說,它不是一個GtkMenuPositionFunc,所以我只是施放它(不知道這是否正確)。
問題是,我不認爲我的方法被調用,因爲它從來沒有打印出幫助:(加上它仍然產生菜單,無論我點擊(可能是因爲它沒有調用方法或任何它應該做的)。
任何幫助/想法將不勝收到:)謝謝:)
正如你可以在[教程]參見(http://developer.gnome.org/gtk/ 2.24/GtkMenu.html#GtkMenuPositionFunc)'GtkMenuPositionFunc'的'push_in'參數是'gboolean *'而不是'gboolean'。它不能解決你的問題,但值得注意。 – 2012-08-01 11:21:35
謝謝:)我甚至看到了!我多次看了它:P – andrewktmeikle 2012-08-01 11:39:03