XtCreateWidget
Section: XT FUNCTIONS (3Xt)
Updated: Release 6.3
Index
xjman/web INDEX
名前
XtCreateWidget, XtVaCreateWidget, XtCreateManagedWidget, XtVaCreateManagedWidget, XtDestroyWidget - ウィジェットの生成と破棄
書式
Widget XtCreateWidget(name, widget_class, parent, args, num_args)
String name;
WidgetClass widget_class;
Widget parent;
ArgList args;
Cardinal num_args;
Widget XtVaCreateWidget(name, widget_class, parent, ...)
String name;
WidgetClass widget_class;
Widget parent;
Widget XtCreateManagedWidget(name, widget_class, parent, args, num_args)
String name;
WidgetClass widget_class;
Widget parent;
ArgList args;
Cardinal num_args;
Widget XtVaCreateManagedWidget(name, widget_class, parent, ...)
String name;
WidgetClass widget_class;
Widget parent;
void XtDestroyWidget(w)
Widget w;
引き数
- args
-
リソースのデフォルト値を上書きする引き数リストを指定。
- name
-
生成するウィジェットのリソース名を指定。
これはリソースの取得に使われるので、同じ親を持つ他のどのウィジェットと
も同じであってはならない。
- num_args
-
引き数リスト内の引き数の数を指定。
- parent
-
親ウィジェットを指定。
- w
-
ウィジェットを指定。
- widget_class
-
生成されるウィジェットに対するウィジェットクラスへのポインタを指定。
- ...
-
デフォルトのリソース値を上書きする可変長引き数リストを指定。
説明
関数
XtCreateWidget
は、ウィジェット生成操作の大部分を行う。
- *
-
このクラスとその全てのスーパークラスに対して、class_initialize 手続き
が呼ばれたかどうかチェックする。呼ばれていなければ、スーパークラスから
サブクラスの順に必要な呼び出しを行う。
- *
-
ウィジェットのインスタンスに対するメモリを割り当てる。
- *
-
親クラスが
constraintWidgetClass
のサブクラスならば、親ウィジェットの constraint 情報のためのメモリを
割り当て、この領域のアドレスを constraints フィールドに格納する。
- *
-
コアの非リソースデータのフィールドを初期化する(例えば、parent や
visible 等)。
- *
-
このクラスや全てのスーパークラスに対して指定されたリソースのリストを使っ
て、リソースのフィールド(例えば、background_piexel 等)を初期化する。
- *
-
親ウィジェットのクラスが
constraintWidgetClass
のサブクラスならば、constraint 情報のレコード用のリソースのフィールド
を初期化する。これには、親のクラスと
constraintWidgetClass
までの全てのスーパークラスに対して指定された constraint 情報のリソース
が用いられる。
- *
-
ウィジェットに対する初期化手続きが、
Core
の初期化手続きから、ウィジェットの初期化手続きへ向かう順で呼ばれる。
- *
-
親ウィジェットのクラスが
compositeWidgetClass
のサブクラスならば、このウィジェットは親ウィジェット insert_child 手続
きを呼ぶことによって、親ウィジェットの子のリストに加えられる。
詳しくは 3.5 章を参照すること。
- *
-
親ウィジェットのクラスが
constraintWidgetClass
のサブクラスならば、
constraintWidgetClass
から始まって親の constraint 情報の初期化手続きに向かう順で constraint
情報の初期化手続きが呼ばれる。
マクロ
XtNumber
を使って、引き数リスト中の引き数の数を求めることができる点に注意すること。
詳しくは、11.1 章を参照すること。
関数
XtCreateManagedWidget
は、
XtCreateWidget
と
XtManageChild
を呼ぶ簡易関数である。
関数
XtDestroyWidget
は、ウィジェットを破棄する唯一の方法を提供する。これには、自分自身を破
棄するウィジェットも含まれる。
この関数は、破棄されるウィジェットのアプリケーションコールバックルーチ
ンから呼ぶことも含めて、いつ呼んでもよい。
この関数は、破棄されるウィジェットに対するぶら下がり参照を避けるため、
2つのフェーズで破棄の処理を行なうことが必要である。
フェーズ1では、
XtDestroyWidget
が以下の処理を行う。
- *
-
このウィジェットの being_destroyed フィールドが
True
ならば、処理は即座に戻る。
- *
-
ウィジェットツリーを再帰的に下り、このウィジェットと全ての子ウィジェッ
トのbeing_destroy フィールドに
True
をセットする。
- *
-
安全に破棄できるようになった時に破棄するウィジェットのリスト(破棄リス
ト)に、このウィジェットを加える。
破棄リストのエントリーは、破棄リスト上で w2 が w1 の後にあらわれた場合、
w2 は w1 の下位ウィジェットではないという不変性を満たす。
(下位ウィジェットは、通常とポップアップの子ウィジェットの両方を指す。)
フェーズ2は、現在のイベントの結果として生じる、実行すべき全ての手続き
が呼ばれたときに行われる(これは、イベントマネージャとトランスレーショ
ンマネージャに登録された全ての手続きを含む)。つまり、これは
XtDispatchEvent
の現在の呼び出しが戻ってくるときに行われ、
XtDispatchEvent
が呼ばれていないときには即座に行われる。
フェーズ2では、
XtDestroyWidget
は破棄リストの各エントリーに対して次の処理を行う。
- *
-
ウィジェット(と、その全ての下位ウィジェット)に登録された破棄コールバッ
ク手続きを呼ぶ。呼び出しの順序は降順である(親のコールバックの前に、子
のコールバックを呼ぶ)。
- *
-
このウィジェットの親が
compositeWidgetClass
のサブクラスであり、かつ親が破棄されていない場合は、このウィジェットに
対して
XtUnmanageChild
が呼ばれ、親の delete_child 手続きが呼ばれる(3.4 章を参照のこと)。
- *
-
このウィジェットの親が
constraintWidgetClass
の場合、最終的に
constraintWidgetClass
に対して constraint 情報の破棄手続きが呼ばれるまで、
親、そしてそのスーパークラスに対して constraint の破棄手続きが呼ばれる。
- *
-
ウィジェット(と、その全ての下位ウィジェット)に対して、降順で destroy
メソッドが呼ばれる。
このようなウィジェットに対しては、最初はそのウィジェットに宣言された破
棄手続き、次にそのスーパークラスの破棄手続きというように手続きが呼ばれ
てゆく。これは、Core クラスのレコードに宣言された破棄手続きが最終的に
呼ばれるまで行われる。
ウィジェットがリアライズされていれば(つまり、X のウィンドウを持ってい
れば)、
XDestroyWindow
が呼ばれる。
X サーバは、全ての下位ウィンドウを再帰的に破棄する。
- *
-
再帰的にツリーを降り、全てのポップアップウィジェット、constraint 情報
のレコード、コールバックのリスト、(ウィジェットが
compositeWidgetClass
のサブクラスならば)子ウィジェットを解放する。
関連項目
XtAppCreateShell(3Xt),
XtCreatePopupShell(3Xt)
X Toolkit Intrinsics - C Language Interface
Xlib - C Language X Interface
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 15:56:26 GMT, February 12, 2001