2012年12月23日日曜日

Hello GUI (C言語 for Linux) part 1

C言語でGUIアプリケーションを作成してみようと思う。
使うのはX Window System

概要は以下URLをみてください。
http://xjman.dsl.gr.jp/X11R6/X11/

また、コンパイラはGCC

まだ、勉強している最中で、思考をまとめるために書いているので多数ミスがある可能性が高いので指摘していただきたいです。

ソースコードの内容としては、ただ真っ暗な画面で終了するとエラーが出るものです。

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

int main(){
 Display *display; //参照→http://xjman.dsl.gr.jp/X11R6/X11/CH02.html
 char *display_name;//ハードウェアのディスプレイ名
 GC gc;//グラフィックコンテキスト 参照→http://xjman.dsl.gr.jp/X11R6/X11/CH07.html
 Window window;//参照→http://xjman.dsl.gr.jp/X11R6/X11/CH03.html
 XEvent ev;//参照→http://xjman.dsl.gr.jp/X11R6/X11/CH10.html
 int width;
 int height;
 //Display情報
 display_name=NULL;
 display = XOpenDisplay(display_name);//ハードウェアのディスプレイ名,NULLだとDISPLAY環境変数の値が使われる。
 //横と高さの大きさ
 width = DisplayWidth(display,0)/4;//大きさを取ってくる、ディスプレイサーバとディスプレイの番号。
 height = DisplayHeight(display,0)/4;//大きさは1/4
 //画面作成
 //window=XCreateWindow(display,RootWindow(display,0),0,0,width,height,1,CopyFromParent,InputOutput,DefaultVisual(display, DefaultScreen(display)),0,0);
 //めんどくさい時はこっち
 window=XCreateSimpleWindow(display,RootWindow(display,0),0,0,width,height,1,0,0);
 //タイトル
 XStoreName(display,window,"Hello GUI");
 gc=XCreateGC(display,window,0,NULL);//グラフィック操作
 //本来なら使うマスクだけをいれる
 XSelectInput(display,window,ExposureMask|ButtonPressMask|ButtonReleaseMask|KeyPressMask|ButtonMotionMask|KeyReleaseMask);
 //画面の表示
 XMapWindow(display,window);
 //終了しないためのwhile(1)
 while(1){
  XNextEvent(display,&ev);//イベント待ち
 }
  
 return 0;

}


0 件のコメント:

コメントを投稿