您的位置:程序门 -> linux/unix社区 -> 程序开发区



自己找到了解决“gtk+按键监听问题 ”的方法,只是还是不明白gtk_key_snooper_install


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


自己找到了解决“gtk+按键监听问题 ”的方法,只是还是不明白gtk_key_snooper_install
发表于: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;
}


快速检索

最新资讯
热门点击