Chinaunix首页 | 论坛 | 博客
  • 博客访问: 241421
  • 博文数量: 28
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 468
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-03 10:33
文章分类

全部博文(28)

文章存档

2011年(1)

2009年(14)

2008年(13)

我的朋友

分类: C/C++

2009-03-06 11:38:54

在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

阅读(5394) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

sonichy2016-08-21 13:10:33

代码非常好,加入我的程序中。