イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > OSF/Motifインタフェースマニュアル > OSF/Motifによるプログラミング > コ−ルバックとアクションの使用 > xtAddCallback/4, xtAddCallbacks/1

xtAddCallback/4, xtAddCallbacks/1

IF/Prolog by Siemens
MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

xtAddCallback(+WidgetName, +CallbackName, +Predicate, +ClientData) xtAddCallbacks(+CallbackList)

intrinsicsのXtAddCallback(s)()と同様の働きをします。

xtAddCallback/4は、名前で識別されるコ−ルバック述語をwidgetのコ−ルバックリストに追加します。

xtAddCallback/4は、コ−ルバック述語Predicate/3の存在をチェックし、それがない場合には例外を起こします。

以下のコ−ルバック述語は組み込まれており、toolkit intrincsicsの場合と同様にポップアップに使用できます。

xtCallbackPopdown ClientData[Shell, Enable]を通して引き渡されたシェルをポップダウンします

xtCallbackNone ClientDataとして引き渡されたシェルをポップアップします xtCallbackExclusive xtCallbackNonExclusive

以下のコ−ルバック述語は、便利なので組み込まれています。

xtCallbackBreak xtBreakMainLoop/0を呼び出します

xtCallbackBye Prologを終了させます

xtCallbackSetGlobal ClientDataが[Var, Val]の場合にset_global(Var, Val)を呼び出します

コ−ルバックのディスパッチは、C言語バインディングの場合と同様に行えます。ただ1つの例外は、Cではwidgetの破壊中にコ−ルバックを破壊する述語が呼び出されますが、ここではwidgetの破壊が終了してから呼び出されます。

Predicate/3は、引き起こされたイベントがディスパッチされた場合に呼び出されます。

Predicate(WidgetName, ClientData, CallData).

コ−ルバック述語が失敗した場合には、エラ−検出のために例外"callback_predicate_failed"が起きます。

ClientDataはどのPrologの項でもよく、呼び出し時にPredicateに引き渡されます。

xtAddCallbacks/1は、CallbackList中のすべてのコ−ルバックを追加するためにxtAddCallback/4を呼び出します。

[user]. | write_callback(WidgetName, ClientData, CallData) :- write('callback from widget '), write(WidgetName), write(' with client_data '), write(ClientData), nl. |EOF yes ?- xtAddCallback(xmPushButton_1, activateCallback, write_callback, xxx). yes ?- xtMainLoop. < click with left mouse button to window > callback from widget xmPushButton_1 with client data xxx < click with left mouse button to window > callback from widget xmPushButton_1 with client data xxx < click with left mouse button to window > callback from widget xmPushButton_1 with client data xxx < ctrl B in window >

yes ?- _

widget_expected WidgetNameが存在しない atom_expected CallbackNameがアトムでない illegal_callback_name この名前のコ−ルバックリストは存在しない illegal_widget_callback このwidgetに存在しないコ−ルバックリストである illegal_callback_predicate Predicate/3が定義されていない  

document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/osf_motif/motifprog/callback/xtadcall/print_jp.html
published 2008/12/1 update 1995/11/6 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
戻る> managed with ubiCMS