ログイン
編集不可のページディスカッション情報添付ファイル
"clear/wm_devel/2011-08-16"の差分

MMA
2と3のリビジョン間の差分
2011-08-16 16:10:20時点のリビジョン2
サイズ: 1876
編集者: clear
コメント:
2011-08-16 16:20:12時点のリビジョン3
サイズ: 2052
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 27: 行 27:
行 30: 行 29:
d = XOpenDisplaY(NULL); d = XOpenDisplay(NULL);
行 32: 行 31:
    fprintf(stderr, "failed to connect x server\n");     fprintf(stderr, "failed to connect X server\n");
行 40: 行 39:

=== ディスプレイの情報を取得してみる ===
ちょっと逸れて、接続したXサーバから情報を取得してみる。
{{{#!highlight c
/* ... */
}}}

Xクライアントの作成

しばらくXクライアントを作って感覚をつかんでみる。

こんなのがあったのでざっと読んでみると、割とWindowsでAPI叩いてプログラム書くのに似ている(むしろ逆なのだろう)。GC(Graphics Context)とかハンドルとかは大体同じような理解で良さそう。

「何もしない」やつを作ってみる

お約束のウィンドウが出るだけというアレをステップを追いつつ作ってみる。

Xサーバへの接続

何はともあれまずXサーバに接続する。必要なのはXサーバの動いているホストのアドレスとディスプレイ番号。ちなみに最初のディスプレイは0番。この辺は普通に使ってるだけでもわかるか。

XOpenDisplay
Xサーバと接続する

Display *XOpenDisplay(char *display_name);
  • nameに"<address>:<displaynumber>"の形式で指定する。NULLだとDISPLAY環境変数を見に行くらしい

  • Display型のポインタが帰ってくるので、これを使ってXサーバとやりとりする。失敗するとNULLが来る

終了時に接続を切るときはXCloseDisplay()を使うらしい。

XCloseDisplay
Xサーバとの接続を切る

int XCloseDisplay(Display *display);
  • まあ見たとおり
  • これによって全てのウィンドウと確保したリソースが解放されるらしい。プログラムは終了しない

とりあえず接続して終了するだけならこんな感じか。

Display *d;
d = XOpenDisplay(NULL);
if (!d) {
    fprintf(stderr, "failed to connect X server\n");
    exit(1);
}

/* ... */

XCloseDisplay(d);

ディスプレイの情報を取得してみる

ちょっと逸れて、接続したXサーバから情報を取得してみる。

   1 /* ... */

clear/wm_devel/2011-08-16 (最終更新日時 2011-11-06 23:19:53 更新者 clear)