|
想写一个简单的gui程序,这个程序可以把鼠标跟键盘事件全部都抓取过来,使得用户点击其它程序没有反应,但又不想让用户看见这个程序。
自己想的一个简单方法是,创建一个gtk_window,然后不设置border,接着把window设为透明的,这样用户就看不见程序了。
可是我用gdk_pointer_grab的时候,虽然返回值显示成功,可是根本不起任何作用
- int main( int argc, char *argv[])
- {
- GtkWidget *window;
- gtk_init(&argc, &argv);
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
- gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
- gtk_window_set_decorated(GTK_WINDOW (window), TRUE);
- g_signal_connect_swapped(G_OBJECT(window), "destroy",
- G_CALLBACK(gtk_main_quit), G_OBJECT(window));
- gtk_widget_show(window);
- while (1)
- {
- if(gdk_pointer_grab(window->window,FALSE,
- 0,window->window,NULL,GDK_CURRENT_TIME))
- {
- printf("grab success\n");
- break;
- }
- else
- {
- printf("failed\n");
- usleep(10000);
- }
- }
- gtk_main();
- return 0;
- }
复制代码
因为刚开始学gtk,也不是很明白,搜了很多,也没发现合适的
不知有人可以解答不? |
|