gdk 화면 속성을 가져 오는이 초보자 프로그램에 도움을주십시오. 나는 연결되어있는 디스플레이 유닛을 찾기 위해 작은 C++ 프로그램을 가지고있다. Linux 데비안에서 C++을 사용하고 있습니다. gdk_screen_get_default()
은 Screen
개체를 반환하지 않습니다. 화면 개체를 확인하지 않으면 다음 오류가 발생합니다.gdk_screen_get_default()가 null을 반환합니다.
오류 (공정 : 8023) : GDK-CRITICAL ** : gdk_screen_get_monitor_geometry : 주장 'GDK_IS_SCREEN (화면)'나는 관련 게시물을 통해 가서 아래를 위해 this 언급
실패 코드 스 니펫.
도움 주셔서 감사합니다. 이 문제를 해결하기위한 지침/지침이 도움이 될 것입니다.
나는 하나 개의 모니터가 연결하고 디스플레이 설정이
$ echo $XDG_CURRENT_DESKTOP
GNOME
$ echo $DISPLAY
:0
CODE
#include <gdk/gdk.h>
#include <iostream>
/*
GTK version 3.14.5
g++ getScreenInfo.cpp -o getScreenInfo `pkg-config gtk+-3.0 --cflags --libs`
*/
int main()
{
GdkScreen *screen;
screen = gdk_screen_get_default();
int num_monitors;
int i;
if (screen)
{
num_monitors = gdk_screen_get_n_monitors(screen);
for (i = 0; i < num_monitors; i++)
{
GdkRectangle rect;
gdk_screen_get_monitor_geometry (screen, i, &rect);
std::cout << "monitor " << i << ": coordinates (" << rect.x << ","
<< rect.y << ", size (" << rect.width << "," << rect.height << ")"
<< std::endl;
}
}else
{
std::cout << "Couldn't obtain default screen object" << std::endl;
}
}
2017년 4월 27일 EDIT 있습니다 : 내 자신의 질문에 대답 해결
#include <iostream>
#include <gdk/gdk.h>
#include <gtk/gtk.h>
/*
GTK version 3.14.5
To compile:
g++ getScreenInfo.cpp -o getScreenInfo `pkg-config gtk+-3.0 --cflags --libs`
*/
int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
GdkScreen *screen = gdk_screen_get_default();
int num_monitors;
int i;
if (screen)
{
num_monitors = gdk_screen_get_n_monitors(screen);
for (i = 0; i < num_monitors; i++)
{
GdkRectangle rect;
gdk_screen_get_monitor_geometry (screen, i, &rect);
std::cout << "monitor " << i << ": offsets (" << rect.x << ","
<< rect.y << ", size (" << rect.width << "," << rect.height << ")"
<< std::endl;
}
}
else
{
std::cout << "Couldn't obtain default screen object" << std::endl;
}
// To query primary display properties
guint monitor = gdk_screen_get_primary_monitor(screen);
GdkRectangle screen_geometry = { 0, 0, 0, 0 };
gdk_screen_get_monitor_geometry(screen, monitor, &screen_geometry);
std::cout << screen_geometry.x << std::endl;
std::cout << screen_geometry.y << std::endl;
std::cout << screen_geometry.width << std::endl;
std::cout << screen_geometry.height << std::endl;
}
제목을 편집하는 대신 허용되는 것으로 표시하십시오. 감사! :) – Alfabravo