書式
void XtInsertEventTypeHandler(widget, event_type, select_data, proc, client_data, position)Widget wdget;
int event_type;
XtPointer select_data;
XtEventHandler proc;
XtPointer client_data;
XtListPosition position;
void XtRemoveEventTypeHandler(widget, event_type,
select_data, proc, client_data)
Widget wdget;
int event_type;
XtPointer select_data;
XtEventHandler proc;
XtPointer client_data;
void XtRegisterExtensionSelector(display, min_event_type,
max_event_type, proc, client_data)
Display* display;
int min_event_type;
int max_event_type;
XtExtensionSelectProc proc;
XtPointer client_data;
XtEventDispatchProc XtSetEventDispatcher(display, event_type,
proc)
Widget widget;
int event_type;
XtEventDispatchProc proc;
Boolean XtDispatchEventToWidget(widget, event)
Widget widget;
XEvent* event;
引き数
- widget
- このイベントハンドラに対するウィジェットを指定する。 Core クラスかそのサブクラスでなければならない。
- event_type
- イベント型を指定する。
- select_data
- サーバからのイベントを選択または選択解除するために使うデータを指定する。
- proc
- 手続きを指定する。
- client_data
- イベントハンドラに渡す追加的なデータを指定する。
- position
- 以前に登録された他のハンドラに対して、このイベントハンドラがいつ呼ばれ るかを指定する。
- display
- ディスプレイを指定する。
- min_event_type, max_event_type
- この拡張に対するイベント型の範囲を指定する。
- event
- 配送するイベントへのポインタを指定する。
説明
関数 XtInsertEventTypeHandler は、手続きを配送機構に登録する。この手続きは、指定された event_type にマッチするイベントが指定された widget に対し て配送されたときに呼び出される。event_type がコア X プロトコルイベントの1つならば、 select_data は EventMask 型の値へのポインタでなければならない。この値は求めるイベントを選択する ために使うイベントマスクを示す。 このイベントマスクは、 XtBuildEventMask が返す値に含まれる。 このウィジェットがリアライズされている場合は、 XtInsertEventTypeHandler は必要に応じて XSelectInput を呼び出す。select_data に NULL を指定することは、値が0であるイ ベントマスクを指すポインタを指定することと等価である。この動作は、関数 XtInsertRawEventHandler と同様である。
event_type が拡張イベント型を指定している場合には、 select_data が指すデータの意味は、指定したイベント型に対して 登録された拡張セレクタによって定義される。
どちらの場合でも、イントリンシクスは select_data が指すデータを コピーすることは求められない。したがって、イベントハンドラがこの select_data の値で登録されている限りは、呼び出し側はこのデータが ずっと有効であることを保証しなければならない。
引き数 position を使って、クライアントは同じイベント型に登録さ れたイベントハンドラが呼び出される順序制御することができる。呼び出す順 序を問題にしない場合は、通常 XtListTail を指定すべきである。この指定により、このイベントハンドラはこのイベント タイプに以前に登録されたどのハンドラよりも後に登録される。
関数 XtRemoveEventTypeHandler は、 XtInsertEventTypeHandler を使って指定したイベント型に登録されたイベントハンドラの登録を抹消 する。client_data がハンドラが登録されたときに与えられた値と一致 しない場合には、このリクエストは無視される。
event_type がコア X プロトコルイベントの1つならば、 select_data は EventMask 型の値へのポインタでなければならない。この値は適切なイベントの選択を解 除するために使うイベントマスクを示す。 このウィジェットがリアライズされている場合は、 XtRemoveEventTypeHandler は必要に応じて XSelectInput を呼び出す。select_data に NULL を指定することは、値が0であるイ ベントマスクを指すポインタを指定することと等価である。これは、関数 XtRemoveRawEventHandler と似ている。
event_type が拡張イベント型を指定している場合には、 select_data が指すデータの意味は、指定したイベント型に対して 登録された拡張セレクタによって定義される。
関数 XtRegisterExtensionSelector は、拡張イベントのウィジェットへの通知について調整を行う手続きを登録す る。
min_event_type と max_event_type が、同じディスプレイに対 する以前の XtRegisterExtensionSelector の呼び出しに渡したパラメータと一致する場合、proc と client_data は前に登録した値を置き換える。 min_event_type と max_event_type で指定した範囲が、以前に 同じディスプレイに対して別の方法で呼び出したときのパラメータと重なる場 合にはエラーが起こる。
関数.ZN XtSetEventDispatcher は、指定された event_type 型のイベントに対して、proc で指 定されたイベントディスパッチャ手続きを登録する。この関数は、前に登録し たディスパッチャを返す(前に登録されてない場合には、デフォルトのディス パッチャが返される)。proc が NULL ならば、指定したタイプに対して デフォルトの手続きが格納される。
後で XtDispatchEvent が イベント event_type を使って呼び出されたとき、イベントを配送するウィジェットを決め るために、指定された proc (またはデフォルトのディスパッチャ)が呼 び出される。
関数 XtDispatchEventToWidget は、指定されたウィジェットに対して登録されたイベントハンドラのリストを 走査し、それぞれのハンドラが返した continue_to_dispatch 値に従っ て、指定したイベント型に対して登録されたイベントハンドラを呼び出す。 Expose, NoExpose, GraphicsExpose, VisibilityNotify の各イベントについては、 イントリンシクスは、イベントハンドラがリストの先頭に登録されたかのよう に振舞う。 これは露出の圧縮規則に従ってウィジェットの露出手続きを呼び、 visible_interest が True ならばウィジェットの visible フィールドを更新するために行われる。 これらの内部イベントハンドラは、決して continue_to_dispatch に False を設定しない。
XtDispatchEventToWidget は、イベントハンドラのいずれかが呼び出された場合には True を返し、いずれも呼び出されなかった場合には False を返す。