【问题标题】:Screen resolution in c++ for linux [closed]用于 linux 的 C++ 中的屏幕分辨率 [关闭]
【发布时间】:2014-11-09 00:55:37
【问题描述】:

我编写了一个必须与鼠标交互的程序,所以我想在 c++ 中为 linux 获取屏幕/监视器的宽度和高度。 我在谷歌和这里搜索并没有找到任何东西。 谢谢

【问题讨论】:

  • 普通 C++ 不知道屏幕或其尺寸,就 C++ 所知,代码可能在无屏幕系统上运行。库可以帮助您,但您需要指定要使用的库以及您是否对实际屏幕、窗口或画布大小感兴趣。
  • 这是给我的显示器的,以便与我的鼠标进行交互。
  • @MelvinFrohike42 我们明白了,但我们需要知道程序是如何运行的? - 它是一个控制台应用程序还是它创建了一个用户可以与之交互的窗口?您使用什么库来创建窗口?等等等等。
  • @Baldrickk 程序在终端上运行,我使用 x11 lib,谢谢,我有点迷路了..

标签: c++ height width screen


【解决方案1】:

如果您在 X 环境中,则可以使用 Xlib: http://tronche.com/gui/x/xlib/display/screen-information.html

WidthOfScreen 和 HeightOfScreen

【讨论】:

    【解决方案2】:

    您可以使用 XLibs 函数来获取显示的大小。

    例如,对于默认显示:

    #include <X11/Xlib.h>
    
    Display* d = XOpenDisplay(NULL);
    Screen*  s = DefaultScreenOfDisplay(d);
    

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

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

    然后你得到你的 Screen * 结构。

    你可以访问height和width成员来获取分辨率!

    s->身高;

    s->宽度;

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

    您可以使用ScreenCount(display) 函数获取显示器上运行的屏幕数量

    【讨论】:

    • 只有代码的答案在 StackOverflow 上不被视为高质量的答案。请描述您的代码的作用以及它如何解决手头的问题。
    猜你喜欢
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 2014-08-06
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多