在linux下,经常需要设置程序全屏显示,GTK+中提供了获取屏幕分辨率的方式,然后只要根据得到的宽高设置窗口显示大小,同时使用gtk_window_set_decorated去掉边框和标题栏显示,就能实现相应的效果了。
下面程序,就是简单的给出了窗口满屏效果是如何实现的,为保证程序的正常退出,添加了键盘事件,按下Esc键,程序退出。
/*
* Name: full_screen.c
*/
#include
<gtk/gtk.h>
#include
<gdk/gdk.h>
#include
<gdk/gdkkeysyms.h>
/* the key value defines can be found here */
#include
<stdio.h>
static void
on_key_press(GtkWidget
*widget, GdkEventKey
*event, gpointer user_data)
{
switch(event->keyval)
{
case GDK_Escape:
gtk_main_quit();
break;
default:
break;
}
}
int main(int argc,
char *argv[])
{
gtk_init(&argc,
&argv);
/* Get the Screen Resolution */
GdkScreen* screen;
gint width, height;
screen = gdk_screen_get_default();
width = gdk_screen_get_width(screen);
height = gdk_screen_get_height(screen);
printf("screen width: %d, height: %d\n", width, height);
/* Create window and set full screen */
GtkWidget *window;
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), width,
height);
gtk_window_set_decorated(GTK_WINDOW(window),
FALSE); /* hide the title bar and the boder */
gtk_widget_show (window);
/* add key event for quit */
g_signal_connect(G_OBJECT(window), \
"key-press-event", \
G_CALLBACK(on_key_press),
NULL);
gtk_main();
return 0;
}
编译执行程序
$ gcc -g `pkg-config --cflags --libs gtk+-2.0` -o full_screen full_screen.c $ ./full_screen |