C++在Linux上的屏幕分辨率

4

我正在编写一个需要与鼠标交互的程序,因此我希望在Linux下使用C++获取屏幕/显示器的宽度和高度。

我在谷歌和这里搜索了一下,但没有找到相关的信息。

谢谢


纯C++并不知道屏幕或其尺寸,对于所有C++来说,代码可能在无屏幕的系统上运行。库可以帮助您,但您需要指定要使用哪个库以及是否对实际屏幕、窗口或画布大小感兴趣。 - stefaanv
这是为了我的显示器,以便与我的鼠标交互。 - MelvinFrohike42
1
@MelvinFrohike42,我们明白了,但我们需要知道的是程序是如何运行的? - 它是控制台应用程序还是创建一个用户可以交互的窗口?您使用哪个库来创建窗口?等等。 - Baldrickk
@Baldrickk,该程序在终端上运行,我使用X11库,谢谢,我有点迷失了... - MelvinFrohike42
2个回答

9
你可以使用XLibs函数获取显示器的尺寸。
例如,默认显示器的尺寸为:
#include <X11/Xlib.h>

Display* d = XOpenDisplay(NULL);
Screen*  s = DefaultScreenOfDisplay(d);

使用XOpenDisplay(NULL)来获取您的X服务器的主显示器(假设您只有一个基本的X配置...)

然后获取您想要分辨率的屏幕。 对于主屏幕,请使用DefaultScreenOfDisplay,否则使用:ScreenOfDisplay(display,screen_nb)。

然后获取您的Screen *结构。

您可以访问高度和宽度成员以获取分辨率!

s->height;

s->width;

这比使用WidthOfScreen/HeightOfScreen更好,因为它只需要一个请求来填充Screen结构。如果您已经在程序中使用Xlib并且有多个屏幕可供选择,则可能已经拥有它。

您可以使用ScreenCount(display)函数获取正在运行的显示器的数量。


1
在StackOverflow上,仅包含代码的答案不被视为高质量的答案。请包括对代码功能的描述以及它如何解决问题。 - TylerH

1

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