[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]


1 OpenVMS用DECwindows Xlib拡張機能

この章は,X Window Systemバージョン11,リリース5のXlibルーチンを補足するためにDEC が提供するXlibルーチンについて説明します(ただし, これらのルーチンはDECのUNIXおよびWindows NTシステムでは使用できないことに注意してください)。

XSelectAsyncEvent

イベントが発生したときに呼び出す処理ルーチンおよび引数を指定します。

フォーマット



     XSelectAsyncEvent(display, window_id, event_type,
                       ast_routine, ast_userarg)
           Display        *display;
           Window         window_id;
           unsigned long  event_type;
           int            (*ast_routine)();
           unsigned long  ast_userarg;

引数

display
XOpenDisplayが返すディスプレイ情報

window_id
非同期イベントを選択するウィンドウの識別子

event_type
非同期イベントを選択するイベントのタイプ

ast_routine
指定したイベントが発生したことをクライアントに通知するときに使用する特定の非同期システム・ トラップ(AST)処理ルーチン

ast_ userarg
指定したイベントが発生したことをクライアントに通知するときに使用するユーザ指定の引数

説明

XSelectInputを呼び出してウィンドウのイベント・セットにインタレストを指定する前に, クライアントはXSelectAsyncEventを呼び出して, 指定したイベントが発生したときに処理ルーチンと引数を呼び出すように指定することができます。

Xlibは指定したイベントをイベント・キューに登録するときには,必ずクライアントの ast_routine 情報および ast_userarg 情報を使用してAST の実行要求を行います。ASTはイベント通知メカニズムとしてのみ機能します。 すなわち,アプリケーションがイベント・キューからイベントを実際に取り出して処理する場合は, 標準Xlibイベント・ルーチンを使用します。

クライアントが ast_routine を呼び出すと,ルーチンは ast_userarg 引数を値でクライアントに引き渡します。

クライアントはXSelectAsyncEventを何回も呼び出して,1つのウィンドウにおけるさまざまなイベント用に, ルーチンと引数のいくつかの組み合せを指定することができます。 常に最終呼び出しが最優先されます。クライアントが ast_routine 引数をゼロにしてXSelectAsyncEventを呼び出すと, 非同期通知は無効になりますが,指定したイベントに対する現在の選択状態は影響を受けません。

通知ASTは,イベントがXlibによってイベント・キューに登録される順序と同じ順序でキューに登録されます。 したがって,クライアントはキューにあるイベントと同じ順序で通知AST を受け取ることになります。

XSelectAsyncEventが1つのイベント・タイプを指定するのに対してXSelectAsyncInput が1つのイベント・マスクを指定すること以外は, XSelectAsyncEventはXSelectAsyncInputと類似しています。

XSelectAsyncInput

イベントのサブセットが発生したときに呼び出す処理ルーチンおよび引数を指定します。

フォーマット



     XSelectAsyncInput(display, window_id, event_mask,
                       ast_routine, ast_userarg)
       Display        *display;
       Window         window_id;
       unsigned long  event_mask;
       int            (*ast_routine)();
       unsigned long  ast_userarg;

引数

display
XOpenDisplayが返すディスプレイ情報

window_id
非同期入力を選択するウィンドウの識別子

event_mask
削除するイベントのイベント・タイプを指定するビットマスク。このマスクは 表 1-1で説明するイベント・ マスク要素の1つ以上の論理和です。

ast_routine
指定した複数のイベントの1つが発生したことをクライアントに通知するときに使用する特定の非同期システム・ トラップ(AST)処理ルーチン

ast_userarg
指定した複数のイベントの1つが発生したことをクライアントに通知するときに使用するユーザ指定のパラメータ

表 1-1 イベント・マスク要素

ビット MIT C値 説明
1 KeyPressMask (アプリケーションが)キーボード・ ダウン・イベントを必要としている。
2 KeyReleaseMask (アプリケーションが)キーボード・アップ・イベントを必要としている。
3 ButtonPressMask (アプリケーションが)ポインタ・ ボタン・ダウン・イベントを必要としている。
4 ButtonReleaseMask (アプリケーションが)ポインタ・ボタン・アップ・イベントを必要としている。
5 EnterWindowMask (アプリケーションが)ポインタ・ ウィンドウ・エントリ・イベントを必要としている。
6 LeaveWindowMask (アプリケーションが)ポインタ・ウィンドウ・リーブ・イベントを必要としている。
7 PointerMotionMask (アプリケーションが)ポインタ移動イベントを必要としている。
8 PointerMotionHintMask (アプリケーションが) ポインタ移動ヒントを必要としている。
9 Button1MotionMask ボタン1を押しながらポインタ移動。
10 Button1MotionMask ボタン2 を押しながらポインタ移動。
11 Button3MotionMask ボタン3を押しながらポインタ移動。
12 Button4MotionMask ボタン4を押しながらポインタ移動。
13 Button5MotionMask ボタン5を押しながらポインタ移動。
14 ButtonMotionMask いずれかのボタンを押しながらポインタ移動。
15 KeymapStateMask ウィンドウ・エントリ,およびフォーカス・ インにおいて(アプリケーションが)キーボード状態を必要としている。
16 ExposureMask (アプリケーションが)いずれかのエクスポージャを必要としている。
17 VisibilityChangeMask (アプリケーションが) 見えている状態の変更を必要としている。
18 StructureNotifyMask (アプリケーションが)ウィンドウ構造体の変更を必要としている。
19 ResizeRedirectMask 現在のウィンドウのサイズ変更をリダイレクトする。
20 SubstructureNotifyMask (アプリケーションが) 副構造体の通知を必要としている。
21 SubstructureRedirectMask ウィンドウの副構造体をリダイレクトする。
22 FocusChangeMask (アプリケーションが) 入力フォーカスの変更を必要としている。
23 PropertyChangeMask (アプリケーションが) プロパティの変更を必要としている。
24 ColormapChangeMask (アプリケーションが) カラー・マップの変更を必要としている。
25 OwnerGrabButtonMask owner_eventsをTRUEに設定した状態で自動グラブを起動しなければならない。

説明

XSelectInputを呼び出してウィンドウのイベント・セットにインタレストを指定する前に, クライアントはXSelectAsyncInputを呼び出してそのイベントのサブセットが発生したときに処理ルーチンと引数を呼び出すように指定することができます。

Xlibは,指定した複数のイベントの1つをイベント・キューに登録するたびに, クライアントの ast_routine 情報および ast_userarg 情報を使用してAST の実行要求を行います。この ast_routine 引数およびast_userarg 引数により,指定したイベントの1つが発生したことをクライアントに対して通知するときに使用される処理ルーチンとパラメータの組み合せをクライアントが指定することができます。AST はイベント通知メカニズムとしてのみ機能します。 すなわち,アプリケーションがイベント・ キューからイベントを実際に取り出して処理する場合は,標準Xlibイベント・ ルーチンを使用します。

クライアントはXSelectAsyncInputを何回も呼び出して,1つのウィンドウにおけるさまざまなイベント用にルーチンと引数のいくつかの組み合せを指定できます。 常に最終呼び出しが最優先されます。 ast_routine 引数をゼロにして呼び出しを行うと非同期通知は無効になりますが, 指定したイベントに対する現在の選択は影響を受けません。

通知ASTは,イベントがXlibによってイベント・キューに登録される順序と同じ順序でキューに登録されます。 したがって,クライアントはキューにあるイベントと同じ順序で通知AST を受け取ることになります。

XSelectAsyncEventが1つのイベント・タイプを指定するのに対してXSelectAsyncInput が1つのイベント・マスクを指定すること以外は, XSelectAsyncInputはXSelectAsyncEventと類似しています。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]