hi,hello: Thanks for your helps. now i want to do:my condition is being no mouse,the only terminal controlling tool is the keyboard.(i am doing a STB project.). when a button get focus(with keyboard) , setting the button's background to be a color. then when the button lost focus,setting the button's background to be another color.i do the following. i rewrite the testing code,but it's still not working like i expected.
#include<gtk/gtk.h> #include<gdk/gdkx.h> #define WIDTH 30 #define Height 20 /* drawing a colorful rectangle on the button,the button will look like with a colorful background*/ void DrawColorRectOnButton(GtkWidget *object,gpointer data) { static GdkColormap *colormap = NULL; static GdkGC *gc = NULL; GdkColor color; GtkWidget *widget = GTK_WIDGET(data); gint x = 0; gint y=0; gint width = 30; //the rectangle's width,height equal to the button's width,height gint height = 20; if(NULL == colormap) { colormap = gdk_color_get_system(); gc = gdk_gc_new(widget->window); } color.red = 61696; color.green = 52736; color.blue = 45312; gdk_color_alloc(colormap,&color); gdk_gc_set_foreground(gc,&color); gdk_draw_rectangle(widget->window,gc,TRUE,x,y,width,height); } int main(int argc,char *argv[]) { GtkWidget *window; GttkWidget *button1; GtkWidget *area1; GtkWidget *button2; GtkWidget *area2; GtkWidget *vbox; gtk_init(&argc,&argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(gtk_exit),NULL); vbox = gtk_vbox_new(TRUE,2); gtk_container_add(GTK_CONTAINER(window),vbox); button1= gtk_button_new_with_label("1"); gtk_widget_set_usize(button1,WIDTH,HEIGHT); gtk_box_pack_start(GTK_BOX(vbox),button1,TRUE,FALSE,0); gtk_window_set_focus(GTK_WINDOW(window),button1); area1 = gtk_drawing_area_new(); gtk_widget_set_usize(area1,WIDTH,HEIGHT); gtk_signal_connect(GTK_OBJECT(button1),"focus_in_event",GTK_SIGNAL_FUNC(DrawColorRectButton),area1); button2= gtk_button_new_with_label("2"); gtk_widget_set_usize(button2,WIDTH,HEIGHT); gtk_box_pack_start(GTK_BOX(vbox),button2,TRUE,FALSE,0); gtk_window_set_focus(GTK_WINDOW(window),button2); area2 = gtk_drawing_area_new(); gtk_widget_set_usize(area2,WIDTH,HEIGHT); gtk_signal_connect(GTK_OBJECT(button2),"focus_in_event",GTK_SIGNAL_FUNC(DrawColorRectButton),area2); gtk_widget_show(area1); gtk_widget_show(area2); gtk_widget_show(button1); gtk_widget_show(button2); gtk_widget_show(vbox); gtk_widget_show(window); gtk_main(); return 1; } PS: i don't know how to set a button's background color when the user enviorment without mouse supporting( i know when the mouse available,using bg[GTK_STATE_PRELIGHT]=color, the button's color will show some color after the mouse pointer put on the button). _______________________________________________ gtk-list mailing list [EMAIL PROTECTED] http://mail.gnome.org/mailman/listinfo/gtk-list