xtGetEventComponents(?EventComponentList) xtGetEventComponent(?EventComponent)
最近、あるいは現在ディスパッチされているイベントの指定したコンポーネントを問い合わせます。
イベント構造体のコンポーネントは明示的に問い合わせなければなりません。したがって、イベント構造体は要求された場合にだけProlog表現に変換されます。
多くの場合、アプリケーションがイベントコンポーネントを問い合わせる必要はありません。なぜならば、特定のコールバック述語が呼び出されたこと自体や、それに引き渡されたデータに、すでにイベントに関する多くの情報が含まれているからです。
EventComponentListは、次の形をした要素のリストです。
component(?Value)
ここで、'component'は問い合わせるコンポーネントを指定し、Valueはコンポーネントの値と単一化されます。
eventTypeは、最初にアプリケーションによってチェックされなければなりません。正しいイベント構造体のコンポーネントは、それに依存するからです。Prologのイベントコンポーネントの指定子は、'event'の後にCのイベント構造体のコンポーネント名を続け、アンダースコアの代わりに大文字によって単語を区切ったものです。しかし、構造体名が例題のdetailのようにあいまいに使用されると、コンポーネントの指定子はそれらのあいまい性をなくすように変更されます。
x --> eventX detail --> detail or eventInOutDetail
eventTypeがnoEventの場合は、その時点までにディスパッチされたイベントがないか、直前のコールバックがタイマーイベントのような特殊な非Xイベントによって引き起こされたことを意味します。
付録に正しいイベント構造体のコンポーネントの一覧表があるので参照して下さい。
?- [user]. | breakCallback(_,_,Reason) :- | write(Reason), nl, break. | EOF ?- xtAddCallback(pushButton, activateCallback, breakCallback, _). yes ?- xtMainLoop. < click to push button >
(2) ?- xtGetEventComponents( [eventType(Type), eventButton(Button)]).
Type = keyPress Button = buttonX yes ?-
list_expected EventComponentListはリストでなければならない illegal_component_list_element EventComponentListの要素は、アリティ1の項でなければならない illegal_type_component 要求されたコンポーネントはこのイベント構造体には存在せず、このイベント型に対して有効でない illegal_event_component 要求されたイベントのコンポーネントは、インタフェースに登録されていない
xtSetWidgetCursora/2
xtSetUserSpecifiedLocation/1
Up
read on...