みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

X11に関して質問です。ウィンドウの属性の情報。

ウィンドウの属性の情報を知るプログラムを教えてください。
参考ページ:http://xjman.dsl.gr.jp/man/man3/XGetWindowAttributes.3x.html
XGetWindowAttributes関数の使い方がよくわかりません。
XWindowAttributes構造体の一つ目のメンバの値を端末に表示するにはどうすればいいでしょうか?

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
Display *display;
Window w;
GC gc;
XEvent event;
XWindowAttributes *window_attributes_return;

/* ディスプレイ・サーバに接続 */
display = XOpenDisplay(NULL);
if(display == NULL){
fprintf(stderr, "Cannot open display.\n");
exit(1);
}

/* ウィンドウを生成 */
w = XCreateSimpleWindow(display, DefaultRootWindow(display),
50, 50, 400, 300, 1,
BlackPixel(display, 0), WhitePixel(display, 0));

XSelectInput(display, w, ExposureMask);
XMapWindow(display, w);

/* GCの生成 */
gc = XCreateGC(display, w, 0, 0);

/* リクエスト送信 */
XFlush(display);

/* イベントループ */
while(1){
XNextEvent(display, &event);

switch(event.type){
case Expose:
XDrawLine(display, w, gc, 0, 0, 300, 300);

/* ウィンドウの属性の情報を知る?? */
XGetWindowAttributes(display, w, window_attributes_return);
printf("%d", window_attributes_return.x);

break;
}
}

/* Xサーバとの接続を解除 */
XCloseDisplay(display);

return 0;
}

投稿日時 - 2017-07-30 19:55:01

QNo.9357617

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

そもそもコンパイル通るのか疑問ですが、少なくとも

XWindowAttributes window_attributes_return;
XGetWindowAttributes(display, w, &window_attributes_return);

でないとおかしいです。またリファレンスマニュアルの見方も理解できてないように思えます。*_return となってるポインタ引数は、呼び出しサイドでメモリ確保するのが前提です。

投稿日時 - 2017-07-30 20:40:51

お礼

回答有難うございます。

投稿日時 - 2017-07-31 23:00:40

あなたにオススメの質問