ボタンが押されると端末エミュレータにメッセージが表示され、スクリプトが終了するというプッシュ・ボタン関数を作成するには、コールバックを追加します。また、このコールバックの存在をプッシュ・ボタンに伝える必要もあります。新規コードが追加されたスクリプトは、次のとおりです。
#!/usr/dt/bin/dtksh activateCB() { echo "Pushbutton activated; normal termination." exit 0 } XtInitialize TOPLEVEL dttest2 Dtksh $0 XtSetValues $TOPLEVEL title:"dttest2" XtCreateManagedWidget BBOARD bboard XmBulletinBoard $TOPLEVEL ¥ resizePolicy:RESIZE_NONE ¥ background:SkyBlue ¥ height:150 width:250 XtCreateManagedWidget BUTTON pushbutton XmPushButton $BBOARD ¥ background:goldenrod ¥ foreground:MidnightBlue ¥ labelString:"Push Here"¥ height:30 width:100 x:75 y:60 shadowThickness:3 XtAddCallback $BUTTON activateCallback activateCB XtRealizeWidget $TOPLEVEL XtMainLoop
関数 activateCB() がコールバックです。通常は、次のようにプッシュ・ボタンが作成された後に、コールバックをプッシュ・ボタンに追加します。
XtAddCallback $BUTTON activateCallback activateCB
これで、コールバックはプッシュ・ボタンに認識されました。プッシュ・ボタンをクリックすると、関数 activateCB() は実行され、スクリプトを実行した端末エミュレータにメッセージ「Pushbutton activated; normal termination.」が表示されます。スクリプトは、関数 exit 0 を呼び出して終了します。