如何使用Gtk获取屏幕大小?

8

我想用一个C GTK程序获取显示器的尺寸。

我看到了这个版本,但这些函数已经自Gtk 3.22版本开始过时了:

gint width  = gdk_screen_width();
gint height = gdk_screen_height();

在GdkScreen文档中,我只找到了“使用每个监视器的信息”的说明。
我尝试在GdkMonitor或GdkDisplay文档中查找任何相关信息,但没有成功。
唯一类似的函数是:
int gdk_monitor_get_width_mm (GdkMonitor *monitor);

但这不是我正在寻找的内容。

有人知道如何获取这些信息吗?


1
gdk_monitor_get_geometry()gdk_monitor_get_workarea()有什么问题吗? - Jussi Kukkonen
我应该这样做:display = gdk_display_get_default(); monitor = gdk_display_get_monitor(display, 0); gdk_monitor_get_geometry(monitor, &r);这样做会在变量r中返回0,0。 - T. Gros
你可以使用另一个API的函数来获取屏幕的大小(例如在Windows上使用GetSystemMetrics)。你想要使用Gtk的函数来实现这个吗? - Valy
@T.Gros,看起来不错。你能展示一下给你“0, 0”结果的实际代码吗? - Jussi Kukkonen
我不想特别使用Gtk函数,但我希望能在跨平台应用程序中使用。既然我正在使用Gtk,那么这可能会更容易,对吧?(顺便说一下,我正在MacOS / Unix环境下工作)。 - T. Gros
1
@jku 好的,我只是个傻瓜。我在打印 GtkRectangle 的 x 和 y 值而不是宽度和高度...非常感谢您的回答! - T. Gros
2个回答

5
我需要为每台监视器计算纵横比,但是Gtk+函数更新太快了:但最终得到了这个结果:
GdkRectangle workarea = {0};
gdk_monitor_get_workarea(
    gdk_display_get_primary_monitor(gdk_display_get_default()),
    &workarea);

printf ("W: %u x H:%u\n", workarea.width, workarea.height);

1
using Gtk
win = GtkWindow()
maximize(win)
sleep(0.1)
window = GtkWindow("Title", width(win), height(win))
destroy(win)
maximize(window)

screen size : width(win), height(win

我刚刚开始使用Julia中的Gtk,但已经成功地完成了这个任务。如果有未发现的错误,请评论指出。 - Brian Bennett
2
我不了解Julia,但是最后一个括号应该关闭吗? - General Grievance
你被负评是因为这个问题要求用C代码编写答案。 - person the human

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接