Xのクライアントアプリケーションを作成しています。
線を描画したいと思い、
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <stdio.h>
main(){
Display *display;
Window window;
GC gc;
unsigned long foreground,background;
display = XOpenDisplay(NULL);
foreground = BlackPixel(display,0);
background = WhitePixel(display,0);
window = XCreateSimpleWindow(display,RootWindow(display,0),0,0,500,400,0,0,background);
XMapWindow(display,window);
gc = XCreateGC(display,window,0,0);
XSetForeground(display,gc,foreground);
XSetBackground(display,gc,background);
XSetLineAttributes(display,gc,10,LineSolid,CapRound,JoinRound);
XDrawLine(display,window,gc,0,0,500,400);
XFlush(display);
getchar();
}
のようなプログラムを書きました。
しかし、実行してもウィンドウは表示されるのですが肝心の線が描画されません。
ccからは何もいわれませんでした。
gccで試しても駄目でした。
その他、円も長方形もすべて表示できません。
ネットから拾ってきたサンプルプログラムでは表示されますので、このソースのどこかが
間違っているのでは?、と思いここで質問させていただくことにしました。
環境はFreeBSS5.4 KDE です。
どうして線が描画できないのでしょうか。おしえてください。
お礼
御指南の通り sleep(1); を入れると表示されるようになりました。 また、 XNextEvent(display,&e); を入れても、今度は高速に線が描画されました。 最初にウィンドウが現れるときにもExposeイベントは飛んで来るのですね、勉強になりました。 順を追って説明していただいたのでわかりやすかったです。 ありがとうございました。