○アプリケーション終了時になにか処理をする
プログラム中のexit()や、ウィンドウの×ボタンを押した場合でも、実行されます
■プログラムが普通に終了した時に呼び出される LIFOバッファに関数を登録
atexit (quit);//アプリケーション終了時に呼び出される関数を登録
//アプリケーションの終了
void quit(void){
int i;
for(i=0;i<3;i++){//なにか重い処理をさせてみる
printf("%d\n",i);
sleep(1);
}
XtDestroyWidget(top);//ウィジットを破棄する
}
■プログラム
#include <X11/StringDefs.h>
#include <X11/Intrinsic.h>
#include <X11/Xaw/Form.h>
#include <X11/Xaw/Command.h>
Widget top, form;
//アプリケーションの終了
void quit(void){
int i;
for(i=0;i<3;i++){//なにか重い処理をさせてみる
printf("%d\n",i);
sleep(1);
}
XtDestroyWidget(top);//ウィジットを破棄する
}
//ボタンが押された時の動作
void Button1Callback( Widget w, XtPointer client, XtPointer called )
{
exit(0);
}
main( int argc, char **argv )
{
XtAppContext app_context;
top = XtVaAppInitialize( &app_context, "test", NULL, 0, &argc, argv, NULL,
//XtNwidth,500,
//XtNheight,500,
NULL);
form = XtVaCreateManagedWidget("form",formWidgetClass,top,NULL);
//ボタンの作成
Widget button1 = XtVaCreateManagedWidget("button1",//ウィジット名
commandWidgetClass,//ボタンクラスを指定
form,
//リソースの直接入力(どんどん追加できる)
XtNlabel,"quit",//表示される文字
//XtNhorizDistance, 50,//開始位置
//XtNvertDistance,55,
XtNwidth,100,//幅と高さ
XtNheight,20,
XtNborderWidth,1,//境界線
//リソースここまで
NULL);
XtAddCallback(button1, XtNcallback,Button1Callback, NULL );//ボタンのコールバック関数を登録
atexit (quit);//アプリケーション終了時に呼び出される関数を指定
XtRealizeWidget( top );
XtAppMainLoop( app_context );
}
▲トップページ
>
Linux と C