next up previous contents
Next: Openlookを使う Up: Motifを使う Previous: その他のウィジェット

Motifプログラムを書く

では実際にプログラムを書いてみましょう。最初に必要なのはインクルード ファイルの宣言です。Motif関連の.hファイルはインクルードファイル用ディ レクトリのXmというサブディレクトリにあることになっています。標準的には /usr/includeですが、システムによっては別の所にインストールされているか もしれません。例えば/usr/local/X11R5/inclu deとなっているかも知れませ ん。このときはccの-Iオプションでそのディレクトリを指定してください。そ の上で本文では、

        #include        <Xm/Xm.h>

        #include        <Xm/BulletinB.h>

        #include        <Xm/PushB.h>

次にやることはXt Intrinsicsの初期化です。

        main( argc, argv )

        int     argc;

        char    **argv;

        {

        Widget  toplevel;

        XtAppContext            app_context;



        toplevel = XtAppInitialize( &app_context, "Sample1", NULL, 0, &argc, argv,

                                         NULL, NULL, 0 );

これでトップレベルになるシェルウィジェットが出来ました。この下に次々に 子ウィジェットを作ってゆけばよいことになります。

        Widget  bulletinboard, pushbutton;



        bulletinboard = XmCreateBulletinBoard( toplevel, "bulletinB", NULL, 0 );

        XtManageChild( bulletinboard );

        pushbutton = XmCreatePushButton( bulletinboard, "pushB", NULL, 0 );

        XtManageChild( pushbutton );

ボタンが押されたら終わるようにしましょう。

        void    quitCB( w, clientdata, calldata )

        Widget  w;

        XtPointer       clientdata;

        XmPushButtonCallbackStruct      *calldata;

        {

                exit( 0 );

        }

この関数をプッシュボタンのコールバックに割り付けます。XmPushButtonクラ スはXmNact ivateCallbackリソースを持っています。

        XtAddCallback( pushbutton, XmNactivateCallback, quitCB, NULL );

まだ表示はされません。表示しましょう。

        XtRealizeWidget( toplevel );

最後にイベント処理の無限ループに入ります。

        XtAppMainLoop( app_context );

基本的な流れはXt Intrinsicsで見てきたものそのものです。

これでプログラムは出来ました。コンパイルリンクして走らせましょう。メ イクファイルは次のもののようなはずです。

        XMDIR = /usr/local/X11R5

        XMINCFLAGS = -I$(XMDIR)/include

        XMLIBFLAGS = -L$(XMDIR)/lib -lXm -lXt -X11



        xmdemo: xmdemo.o

                cc -o xmdemo xmdemo.o $(XMLIBFLAGS)



        xmdemo.o:       xmdemo.c

                cc -c $(XMINCFLAGS) xmdemo.c



next up previous contents
Next: Openlookを使う Up: Motifを使う Previous: その他のウィジェット



Kinya Hibino
Sun Jan 14 21:50:32 JST 1996