| 发表于:2007-08-07 16:31:19 楼主 |
可以通过捕获按键事件来代替gtk_key_snooper_install函数(它会同时捕获按键和松键?????) #include <gtk/gtk.h> #include <stdio.h> #include <string.h> gint foo(gtkwidget* widget,gdkeventkey* event,gpointer data) { static gchar tmp[2]; static gchar password[1024]= " "; gchar c; c=(gchar)event-> keyval; if(c== '\n ' ¦ ¦c== '\r ') { printf( "password is %s\n ",password); gtk_exit(0); } tmp[0]=c; tmp[1]= '\0 '; strcat(password,tmp); event-> keyval=event-> string[0]= '* '; return 0; } int main(int argc,char* argv[]) { gtkwidget *window,*box,*entry; gtk_set_locale(); gtk_init(&argc,&argv); window=gtk_window_new(gtk_window_toplevel); gtk_window_set_title(gtk_window(window), "enter password "); box=gtk_vbox_new(false,0); gtk_container_add(gtk_container(window),box); entry=gtk_entry_new(); gtk_entry_set_text(gtk_entry(entry), " "); gtk_editable_select_region(gtk_editable(entry),0,-1); g_signal_connect(g_object(entry), "key_press_event ",g_callback(foo),null); gtk_box_pack_start(gtk_box(box),entry,true,true,0); /* gtk_key_snooper_install(foo,(gpointer)null);*/ gtk_widget_show_all(window); gtk_main(); return 0; } |
|
|
|
|