// ( m1.C ) // プッシュボタン・ウィジットを作成する // /*------------------------------------------------------------------------------------ ! Apollo DOMAIN/OS とMotifとC++のバ−ジョンには注意しなければならない。 DOMAIN/OS SR10.4 で X-Window 11.4 には、Motif1.1 と UEDK1.1.3 と C++2.1 の組合わせ が有効である。Motif1.0 は関数のプロトタイプ宣言がされていないのでC++では使えない。 ! コンパイル&リンクのやり方 $ CC m1.C -A inlib,/lib/xmlib1.1 -o m1 Apollo 特有のやり方 % CC -o m1 m1.C -L/usr/X11/lib -lXm -lXt -O -v 通常の UNIX でのやり方 --------------------------------------------------------------------------------------*/ #include #include // exit use #include #include void printCB() { cout << "hello katou kun\n" ; } void exitCB() { exit(0) ; } void main( int argc,char **argv ) // XtInitialize, XtMainLoop は Motif1.0 の { // ときのル−チンです。Motif1.1 でも使える。 Arg args[2] ; Widget top,bb,pb0,pb1 ; // "M1" は.Xdefaults リソ−スでの識別子です。 top = XtInitialize( argv[0],"M1",NULL,0,(Cardinal*)&argc,argv ) ; bb = XmCreateBulletinBoard( top,"bb",NULL,0) ; XtManageChild(bb) ; pb0 = XmCreatePushButton( bb,"pb0",NULL,0 ) ; XtManageChild(pb0) ; XtSetArg( args[0],XmNx,200 ) ; XtSetArg( args[1],XmNy,50 ) ; pb1 = XmCreatePushButton( bb,"bye",args,2 ) ; XtManageChild(pb1) ; XtAddCallback( pb0,XmNactivateCallback,(XtCallbackProc)printCB,NULL ) ; XtAddCallback( pb1,XmNactivateCallback,(XtCallbackProc)exitCB,NULL ) ; XtRealizeWidget( top ) ; XtMainLoop() ; } /* .Xdefaults リソ−ス・ファイル - これは特に設定しなくても、適当に何か表示される。 M1*bb.resizePolicy : RESIZE_NONE M1*bb.width : 300 M1*bb.height : 200 M1*pb0.x : 50 M1*pb0.y : 50 M1*pb0.labelString : hello M1*XmPushButton.width : 50 M1*XmPushButton.height: 30 */