Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. /* ヘッダファイルのインクルード */
  2. #include <stdio.h> /* C標準入出力 */
  3. #include <unistd.h> /* UNIX標準 */
  4. #include <X11/Xlib.h> /* Xlib */
  5.  
  6. /* main関数 */
  7. int main(void){
  8.  
  9. /* 変数の宣言 */
  10. Display *d; /* Display構造体へのポインタd. */
  11. Window wr; /* ウィンドウ生成の結果を表す値wr.(Window == XID == unsigned long) */
  12. int result; /* マップの結果result. */
  13. unsigned long white; /* 白のRGB値white. */
  14. XEvent event; /* XEvent構造体(共用体)のevent. */
  15. int i; /* ループ用変数i. */
  16.  
  17. /* Xサーバとの接続. */
  18. d = XOpenDisplay(NULL); /* XOpenDisplayでXサーバに接続し, 戻り値のアドレスをdに格納. */
  19.  
  20. /* dを出力. */
  21. printf("d = %08x\n", d); /* dの値を16進数で出力. */
  22.  
  23. /* 白のRGB値を取得. */
  24. white = XWhitePixel(d, 0); /* XWhitePixelでスクリーン0における白のRGB値を取得し, whiteに格納. */
  25.  
  26. /* ウィンドウの生成. */
  27. wr = XCreateSimpleWindow(d, DefaultRootWindow(d), 100, 100, 640, 480, 1, white, white); /* XCreateSimpleWindowでウィンドウ生成し, 結果はwrに格納.(DefaultRootWindowでルートウィンドウを取得.) */
  28.  
  29. /* ウィンドウ生成の結果を出力. */
  30. printf("wr = %08x\n", wr); /* wrを出力. */
  31.  
  32. /* ウィンドウのマッピング(表示要求) */
  33. result = XMapWindow(d, wr); /* XMapWindowでマッピング. */
  34.  
  35. /* マッピング結果を出力. */
  36. printf("result = %d\n", result); /* resultの値を出力. */
  37.  
  38. /* イベントマスクのセット. */
  39. XSelectInput(d, wr, ButtonPressMask | ButtonReleaseMask); /* XSelectInputでButtonPressMask, ButtonReleaseMask(マウスボタンを離された時のマスク.)をセット. */
  40.  
  41. /* 表示要求イベントをフラッシュ. */
  42. XFlush(d); /* XFlushでフラッシュ. */
  43.  
  44. /* iの初期化. */
  45. i = 0; /* iを0にしておく. */
  46.  
  47. /* イベントループ. */
  48. while (1){
  49.  
  50. /* イベントの取得. */
  51. XNextEvent(d, &event); /* XNextEventでeventを取得. */
  52.  
  53. /* イベントタイプごとに処理. */
  54. switch (event.type){ /* event.typeの値で分岐. */
  55.  
  56. /* ButtonPress */
  57. case ButtonPress: /* マウスボタンが押された時. */
  58.  
  59. /* ButtonPressブロック. */
  60. {
  61.  
  62. /* マウス位置の出力. */
  63. printf("(%d, %d)\n", event.xbutton.x, event.xbutton.y); /* event.xbutton.xとevent.xbutton.yを出力. */
  64. i++; /* iをインクリメント. */
  65. if (i == 10){ /* iが10の時. */
  66.  
  67. /* Xサーバとの接続を終了する. */
  68. XCloseDisplay(d); /* XCloseDisplayで切断する. */
  69.  
  70. /* プログラムの終了 */
  71. return 0; /* 0を返して正常終了. */
  72.  
  73. }
  74.  
  75. }
  76.  
  77. /* break. */
  78. break; /* breakで終わる. */
  79.  
  80. /* ButtonRelease */
  81. case ButtonRelease: /* マウスボタンが離された時. */
  82.  
  83. /* ButtonReleaseブロック. */
  84. {
  85.  
  86. /* "ButtonRelease!!". */
  87. printf("ButtonRelease!!\n"); /* "ButtonRelease!!"と出力. */
  88.  
  89. }
  90.  
  91. /* break. */
  92. break; /* breakで終わる. */
  93.  
  94. /* default */
  95. default: /* それ以外. */
  96.  
  97. /* break. */
  98. break; /* breakで終わる. */
  99.  
  100. }
  101.  
  102. }
  103.  
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement