2012-04-21 29 views

回答

4

张贴这是因为关于获得GdkWndow注释无人接听至今创造了GdkCursor gdk_set_cursor()

https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#gdk-window-set-cursor

对于大多数小部件,可以将GdkWindow作为GtkWidget结构的窗口数据字段进行检索。下面的代码将光标放在一个GtkWindow窗口小部件:

GtkWidget* win = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
GdkCursor* watchCursor = gdk_cursor_new(GDK_WATCH); 

/* set watch cursor */ 
gdk_window_set_cursor(win->window, watchCursor); 

/* return to normal */ 
gdk_window_set_cursor(win->window, NULL); 

如果你需要得到来自其子部件之一的GtkWindow祖先,你可以使用:

GtkWidget* win = gtk_widget_get_ancestor(someWidget, GTK_TYPE_WINDOW); 
0

杰夫的回答没有为我工作(Gtk3)。因此,这里是我的解决方案:

GdkWindow* win = gtk_widget_get_parent_window(widget); 
GdkCursor* watchCursor = gdk_cursor_new(GDK_WATCH); 
gdk_window_set_cursor(win, watchCursor); 
0

我的解决办法:

void gtkSetCursor(GdkCursorType cursorType) { 
    GdkScreen * screen = gdk_screen_get_default(); 
    GdkWindow * win = gdk_screen_get_root_window(screen); 
    GdkCursor * cursor = gdk_cursor_new(cursorType); //http://developer.gimp.org/api/2.0/gdk/gdk-Cursors.html 
    gdk_window_set_cursor(win, cursor); 
    while (gtk_events_pending()) gtk_main_iteration(); 
} 

... 
gtkSetCursor(GDK_WATCH); 
start your stuff here 
... 
end of your stuff 
gtkSetCursor(GDK_LEFT_PTR);