ボタンが押されると端末エミュレータにメッセージが表示され、スクリプトが終了するというプッシュ・ボタン関数を作成するには、コールバックを追加します。また、このコールバックの存在をプッシュ・ボタンに伝える必要もあります。新規コードが追加されたスクリプトは、次のとおりです。
#!/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 を呼び出して終了します。