Previous: 共用体とは?
Up: イベントの種類とイベント共用体
Next: 複数のイベント・マスク
Previous Page: 共用体とは?
Next Page: 複数のイベント・マスク
先週は主にマウスのイベントを扱いました。
ただし、イベントはマウスから送られるものだけではありません。
少し変わったイベントとして、Exposeイベントがあります。
このイベントの働きは「グラフィックの表示が必要であること」を
知らせるイベントです。
こんなイベントなどなくてもよさそうに思えますが、
ウィンドウの世界では画面はそのアプリケーションン・プログラムだけ
のものではありません。
他のウィンドウと重なったりして、
ウィンドウ上に描いた図形が消されてしまうこともあります。
そうした「事故」が起こったことを知らせるのが Expose イベントなのです。
ウィンドウが初めて表示される時にも Exposeイベントが呼ばれます。
イベントループに入る前に表示したい文字や絵がある場合、
Exposeイベントが発生した時の処理として登録しておけばいいのです。
(ループの前の仕事なのに、ループの途中にあるのは変な感じがしますね。
しかし、こうしておかないと何かの原因で表示が消えてしまった時に困るのです。)
: : /* イベント処理の無限ループに入る */ while( True ) { switch( eve.type ) { case ButtonPress: XCloseDisplay( dsp ); exit(0); case Expose: XFillRectangle( dsp, win, gc, x, y, w, h ); : :