[ 前のページ ] [ 目次 ]


6 DEC入力サーバ・ライブラリ

この章では,DECのプラットホーム上で,X11R5 XIMライブラリを使用してクライアントと通信するためのX11R5 入力サーバを作成する際に必要な情報を記述します。

日本語OpenVMSオペレーティング・システムでは,通信メカニズムに関する詳しい知識がなくても入力サーバを作成できるようなアプリケーション・ プログラミング・インタフェース(API)を提供しています。

6.1 用語

名前 説明
IMS (Input Method Server) 入力サーバ。XIMライブラリからの入力キー・ イベントおよびプロトコルを受信および処理し,前編集と文字列の確定を行うプロセスです。
IMSSL (Input Method Server Service Layer ) IMSの開発に必要なすべてのAPI が含まれている層です。
DECXimプロトコル DECの入力メソッド・プロトコルです。
IMSプログラマ IMS の開発者です。
DIMsウィジェット(Digital Input Method Server widget) クライアントがXCreateIC() を実行するときに作成されるウィジェットです。DIMsウィジェットは, クライアントのXICオブジェクトを処理する基本単位です。
DIMクラス DIMsウィジェットの特性と動作を決定するオブジェクトです。IMS プログラマはこのDIMs クラスにリソースを設定します。

6.2 背景

X11R5におけるX入力メソッド(XIM)の採用に伴い,世界中の言語をサポートするソフトウェアを開発するためのプログラミング・ インタフェースが提供されています。 日本語,中国語,韓国語などの言語は入力メソッドが複雑なため, 通常,各クライアント・プロセスから入力サーバ(IMS)を起動して, 各国語の入力を実現しています。

このような入力モデルは,クライアント/サーバと呼ばれ,XIMライブラリ( クライアント)とIMSとの間に通信プロトコルを設定する必要があります。OpenVMS では,X Windowシステムのクライアント間通信メカニズムに基づくDEC 独自のプロトコル層を導入しています。このプロトコルをDECXim プロトコルと呼びます。IMSプログラマの開発作業をより簡素化するために,DEC では入力サーバのサービス層(IMSSL)において包括的で理解しやすいプログラミング・ インタフェースを提供しています。

6.3 アーキテクチャ

6.3.1 IMSSLの構造

クライアントがXOpenIM()を呼び出すと,IMライブラリとIMSSLとの間の接続が行われます。IMSSL は接続を行い,IMライブラリ・コンテキストを作成し, クライアントに対するXIMIDを生成します。クライアントは, XCreateIC()を使用して各入力テキスト・フィールドに対応する入力コンテキスト(IC) を作成します。

クライアントが複数の入力フィールドを持っている場合,IMSSLは個々の入力フィールドを管理するためにフィールドと同数のIC を作成し,有効なXICID を生成します。さらに,個々のICに対応するDIMsウィジェットが作成されます。 このDIMsウィジェットは,IMSプログラマによってコールバック・ ルーチンなどのリソースで設定されるDIMsクラスの動作を継承します。 このように,IMSSLのIMおよびICのコンテキストがIMSプログラマに対して透過的になっています。 このため,IMSプログラマはそれぞれのDIMs ウィジェットを扱い,IMSのスタートアップ時にDIMsクラスのリソースを設定するだけでよいのです。

図 6-1に,IMSSLの構造と各構成要素の関係を示します。

図 6-1 IMSSLの構造

6.3.2 イベント処理モデル

イベント処理モデルには,FrontEndメソッドおよびBackEndメソッドの2種類があります。

FrontEndメソッドでは,クライアント・ウィンドウの入力イベントは,X サーバによってIMSライブラリとXIMライブラリの両方に直接渡されます。 FrontEndメソッドは,対話式の前編集において優れた性能を提供します。 ただしFrontEndモデルでは,IMSが処理するキー・イベントとクライアントが処理する他のイベントとの間で, 同期化の問題が発生します。このため,FrontEnd メソッドではキー・イベントの損失または重複が発生することがあります。

BackEndメソッドでは,クライアント・ウィンドウの入力イベントは,XIM ライブラリに渡したあとIMSに渡されます。各イベントは渡された順でシリアルに処理されるため,XIM ライブラリとIMSライブラリとの間で同期化の問題は発生しません。BackEnd メソッドを使用すると,IMライブラリは, すべてのKeyPressとKeyRelease,およびイベント・フロー制御で必要とするその他のイベントをIMS に転送し,IMSと同期をとります。

DECXimプロトコルは,BackEndモデルのみをサポートしています。

6.3.3 イベント・フロー制御

DECXimプロトコルは,XIMライブラリとIMS間の通信のために静的イベント・ フローおよび動的イベント・フローの2種類のイベント・フロー・モデルをサポートしています。

静的イベント・フローでは,入力キー・イベントがクライアントからIMS に常に送信されます。

動的イベント・フローでは,処理が必要なキー・イベントだけがクライアントからIMS に送信されます。たとえば,ASCII文字と漢字を組み合わせて入力する場合,ASCII 文字はIMSで処理する必要はないのでキー・イベントをIMS に送信する必要はありませんが,漢字を形成するために必要なキー・ イベントはIMSに送信しなければなりません。

動的イベント・フロー・モデルをサポートするには,IMSプログラマはトリガ・ オン・キー・リストをクライアントに送信する必要があります( 詳細は,第6.4.8項を参照)。 クライアントは, トリガ・オン・キー・リストに含まれるキーを受信して初めて, キー・イベントをIMSに送信します。IMSプログラマがトリガ・オフ・キー・ リストを提供している場合,トリガ・オフ・キー・リストに含まれるキーを受信すると, クライアントはIMSへのイベントの送信を停止します。IMS がトリガ・オフ・キー・リストを提供していない場合,IMSはトリガ・ オフ・キーをチェックするためにAPIを呼び出し,イベント・ フローを停止します。詳細は,第6.5節のDIMsSetEventsForwardの項を参照してください。

6.3.4 サーバの命名規則

IMSは,クライアントからの接続のために1つまたは複数のアトムを登録します。 クライアントは,ロケール情報と論理名XMODIFIERSから特定のIMS と接続しようとします。たとえば,XMODIFIERSが@im=wnnでロケールがja_ JP.SJISの場合,クライアントは_XIM_ja_JP.SJIS@wnnというアトムを検索します。 このアトムが検出できない場合,クライアントは_XIM_ja_JP@wnn というアトムを探します。このアトムも検出できない場合は,接続が失敗したとみなされます。 論理名XMODIFIERSが設定されていない場合,クライアントは_XIM_ja_JP.SJIS@DEC および_XIM_ja_JP@DECを検索します。これらはDEC が提供するIMSのサーバ名です。サーバ名の設定方法についての詳細は, 第6.4.2項を参照してください。

6.3.5 IMSSLの機能

OpenVMSのIMSSLは,IMSの開発者に以下のような機能を提供します。

6.4 DIMsクラスのリソース

各DIMsウィジェットは,ウィジェット自身の動作を決定する一連のデータを持っています。 これをDIMsクラスと呼びます。この節では,DIMsクラスの各リソースの意味とその使用方法を説明します。

次の表に,プログラマがデータを指定するために使用するDIMsクラスのリソースを示します。 各リソースは,DIMsSetTriggerKeys()を使用して設定および変更を行うDIMsNtriggerKeys を除いて,DIMsClassCtxCreate() 使用時にのみ設定できます。 DIMsClassCtxCreate()およびDIMsSetTriggerKeys()については,第6.5節を参照してください。

次の表の備考の欄は,DIMsクラスの作成時にリソースの設定が必須( M)であるか,あるいは任意(O)であるかを示しています。

名前 省略時の値 タイプ 備考
DIMsNlocale NULL DIMsLocaleInfo M
DIMsNserverName NULL DIMsStringList M
DIMsNversion 動的 DIMsVersion O
DIMsNextIMAttr NULL DIMsExtAttr O
DIMsNextICAttr NULL DIMsExtAttr O
DIMsNsupportStyles NULL DIMsSupportStyles M
DIMsNsupportEncodings Compound Text DIMssStringList O
DIMsNtriggerKeys NULL DIMsTriggerKeys O
DIMsNgetExtIMValuesCb NULL XPointer O
DIMsNcreateICCb NULL XPointer O
DIMsNdestroyICCb NULL XPointer O
DIMsNsetExtICValuesCb NULL XPointer O
DIMsNgetExtICValuesCb NULL XPointer O
DIMsNsetICFocusCb NULL XPointer O
DIMsNunsetICFocusCb NULL XPointer O
DIMsNresetICCb NULL XPointer O
DIMsNprocessEventCb NULL XPointer M
DIMsNsetAreaCb NULL XPointer O
DIMsNsetAreaNeededCb NULL XPointer O
DIMsNsetSpotLocationCb NULL XPointer O
DIMsNsetColormapCb NULL XPointer O
DIMsNsetStdColormapCb NULL XPointer O
DIMsNsetForegroundCb NULL XPointer O
DIMsNsetBackgroundCb NULL XPointer O
DIMsNsetBgPixmapCb NULL XPointer O
DIMsNsetFontSetCb NULL XPointer O
DIMsNsetLineSpaceCb NULL XPointer O
DIMsNsetCursorCb NULL XPointer O
DIMsNgetFilterEventsCb 動的 XPointer O
DIMsNgetAreaCb NULL XPointer O
DIMsNgetAreaNeededCb NULL XPointer O
DIMsNgetSpotLocationCb NULL XPointer O
DIMsNgetColormapCb NULL XPointer O
DIMsNgetStdColormapCb NULL XPointer O
DIMsNgetForegroundCb NULL XPointer O
DIMsNgetBackgroundCb NULL XPointer O
DIMsNgetBgPixmapCb NULL XPointer O
DIMsNgetFontSetCb NULL XPointer O
DIMsNgetLineSpaceCb NULL XPointer O
DIMsNgetCursorCb NULL XPointer O
DIMsNclientdata NULL XPointer O

以下の項で,これらのリソースについて説明します。

6.4.1 DIMsNlocale

DIMsウィジェットがサポートするロケールを指定します。このリソースの値は DIMsLocaleInfo型で,次の構造体へのポインタです。

                          typedef struct_DIMsLocaleInfo {
                                  char    *language;
                                  short   num_support_codesets;
                                  char    **support_codesets;
                          }  DIMsLocaleInfoRec, *DIMsLocaleInfo;

languageフィールドには言語とテリトリを指定します。指定する値は, たとえばja_JPのように,XNLSに準拠しているものでなければなりません。DIMs ウィジェットが複数のコードセットをサポートしている場合は, ヌル終了文字列の配列としてsupport_codesetsフィールドを指定してください。 たとえば日本語DIMsウィジェットの場合, support_codesetsにはeucJP,SJISを指定することができます。DIMs ウィジェットがすべてのコード・セットをサポートする場合は, num_support_encodingsに0を,support_ codesetsにNULLを指定してください。クライアントがIMSに接続された後, クライアントのロケールはDIMsLocale(w)を使用して得ることができます。DIMsLocale についての詳細は,第6.5 節を参照してください。

このリソースはDIMsクラスの作成に必須です。

6.4.2 DIMsNserverName

接続に使用される一連のアトム名を指定します。このリソースの値は, DIMsStringList型で,次の構造体へのポインタです。

                          typedef struct_DIMsStringList {
                                  short   num_of_strings;
                                  char    **string_names;
                          } DIMsStringListRec, *DIMsStringList;

num_of_stringsフィールドには,接続に使用される別名の数を指定します。 string_namesフィールドには,接続に使用されるアトムの名前を指定するヌル終了文字列の配列を指定します。 たとえばOpenVMS では,日本語IMSの省略時の名前はDECであり,次のようなアトムが作成されます。

     _XIM_ja_JP@DEC

@DECで終わるアトムはDEC専用ですので,同じ名前でアトムを作成しないでください。OpenVMS XIM とIMSとの接続方法については,第6.3.2項および第6.3.3 項を参照してください。

このリソースはDIMsクラスの作成に必須です。

6.4.3 DIMsNversion

DIMsウィジェットがサポートするDECXimプロトコルのバージョンを範囲で指定します。 このリソースの値はDIMsVersion型で,次の構造体へのポインタです。

                          typedef struct_DIMsVersion {
                                  short   highest_major_version;
                                  short   highest_minor_version;
                                  short   lowest_major_version;
                                  short   lowest_minor_version;
                          } DIMsVersionRec, *DIMsVersion;

highest_major_versionフィールドには,DIMsクラスがサポートするDECXim プロトコルの最高メジャー・バージョンを指定します。

highest_minor_versionフィールドには,DIMsクラスがサポートするDECXim プロトコルの最高マイナー・バージョンを指定します。

lowest_major_versionフィールドには,DIMsクラスがサポートするDECXim プロトコルの最低メジャー・バージョンを指定します。

lowest_major_versionフィールドには,DIMsクラスがサポートするDECXim プロトコルの最低マイナー・バージョンを指定します。

XIMライブラリはバージョンをチェックしてDIMsがサポートされているかどうかを判断します。 たとえば,日本語OpenVMSではDECXimプロトコルV1.0 だけがサポートされているので,フィールドの省略時の値は次のとおりです。


highest_major_version = 1
highest_minor_version = 0
lowest_major_version = 1
lowest_minor_version = 0

このリソースは任意です。

6.4.4 DIMsNextIMAttr

DIMsウィジェットがサポートする拡張XIM属性(XIM値)を指定します。 このリソースが指定されると,クライアントは,これらの拡張XIM値に対してXGetIMValues() を使用することができます。このリソースの値は DIMsExtAttr型で,次の構造体へのポインタです。

                          typedef struct_DIMsExtAttr {
                                  short   num_of_ext_attr;
                                  Attr    ext_attr;
                          } DIMsExtAttrRec, *DIMsExtAttr;

num_of_ext_attrフィールドには,拡張XIM属性の数を指定します。 ext_attrフィールドには,拡張XIMの属性の配列を指定します。 このフィールドの値はAttr型で,次の構造体へのポインタです。

                          typedef struct_Attr {
                                 unsigned short   type;
                                 char             *attributes;
                          } AttrRec, *Attr;

typeフィールドには,属性のタイプを定義する次のいずれかの値を指定します。

              #define byte_t           1        /* 8ビット符号なし整数*/
              #define word_t           2        /* 16ビット符号なし整数 */
              #define long_t           3        /* 32ビット符号なし整数 */
              #define string_t         4        /* charの配列 */
              #define window_t         5        /* Windowフォーマット */
              #define ximstyles_t      10       /* XIMStylesフォーマット */
              #define xrectangle_t     11       /* XRectangleフォーマット */
              #define xpoint_t         12       /* XPointフォーマット */
              #define xfontset_t       13       /* XFontSetフォーマット */

attributesフィールドには,拡張XIM値の名前を定義します。この値はヌル終了文字列でなければなりません。

このリソースは任意です。

6.4.5 DIMsNextICAttr

DIMsウィジェットがサポートする拡張XIC属性(XIC値)を指定します。このリソースが指定されると, クライアントはこれらの拡張XIC値に対してXGetICValues() およびXSetICValues()を使用することができます。このリソースの値は DIMsExtAttr型で,次の構造体へのポインタです。

                          typedef struct_DIMsExtAttr {
                                  short   num_of_ext_attr;
                                  Attr    ext_attr;
                          } DIMsExtAttrRec, *DIMsExtAttr;

num_of_ext_attrフィールドには,拡張XIC属性の数を指定します。 ext_attrフィールドには,拡張XICの配列を指定します。このフィールドの値は Attr型で,次の構造体へのポインタです。

                          typedef struct_Attr {
                                 unsigned short   type;
                                 char             *attributes;
                          } AttrRec, *Attr;

typeフィールドには,属性のタイプを定義する次のいずれかの値を指定します。

     #define byte_t           1               /* 8ビット符号なし整数*/
     #define word_t           2               /* 16ビット符号なし整数*/
     #define long_t           3               /* 32ビット符号なし整数*/
     #define string_t         4               /* charの配列*/
     #define window_t         5               /* Windowフォーマット*/
     #define ximstyles_t      10              /* XIMStylesフォーマット*/
     #define xrectangle_t     11              /* XRectangleフォーマット*/
     #define xpoint_t         12              /* XPointフォーマット*/
     #define xfontset_t       13              /* XFontSetフォーマット*/

attributesフィールドには,拡張XIC値の名前を定義します。この値はヌル終了文字列でなければなりません。

このリソースは任意です。

6.4.6 DIMsNsupportStyles

DIMsウィジェットがサポートする入力スタイルを指定します。このリソースの値は DIMsSupportStyles型で,次の構造体へのポインタです。

                          typedef struct_DIMsSupportStyles {
                                  short   num_support_styles;
                                  XIMStyle        *support_styles;
                          } DIMsSupportStylesRec, *DIMsSupportStyles;

num_support_stylesフィールドには,サポートする入力スタイルの数を指定します。 support_stylesフィールドには, XIMStyleの配列を指定します。

クライアントがIMSと接続したら,クライアントが選択した入力スタイルをDIMsInputStyle(w) を使用して得ることができます。DIMsInputStyleについての詳細は 第6.5節を参照してください。

このリソースは必須です。

6.4.7 DIMsNsupportEncodings

DIMsウィジェットがサポートするエンコーディングを指定します。XIMライブラリはIMS に対して,確定した文字列または前編集の文字列に使用するエンコーディングを決定するよう要求します。IMS は省略時のエンコーディングとして少なくともCOMPOUND_TEXT をサポートする必要があります。 このリソースの値はDIMsStringList型で,次の構造体へのポインタです。

                          typedef struct_DIMsStringList {
                                  short   num_of_strings;
                                  char    **string_names;
                          } DIMsStringListRec, *DIMsStringList;

num_of_stringsフィールドには,サポートするエンコーディングの数を指定します。

string_namesフィールドには,DIMsウィジェットのエンコーディングを優先順位の高い順に定義するヌル終了文字列の配列を指定します。 たとえば,通信のためのエンコーディングとしてSTRINGを使用したい場合, string_namesフィールドにSTRING,COMPOUND_TEXTの順でエンコーディングを指定します。XIM ライブラリがSTRINGエンコーディングをサポートする場合はSTRING が通信に使用され,STRINGエンコーディングをサポートしない場合はCOMPOUND_TEXT が使用されます。

これらの2つのフィールドが指定さていない場合,XIMライブラリはエンコーディングとしてCOMPOUND_TEXT を使用します。クライアントがIMSと接続したら, サポートされているエンコーディングはDIMsEncoding(w) を使用して得ることができます。DIMsEncodingについての詳細は,第6.5節を参照してください。

6.4.8 DIMsNtriggerKeys

IMSのトリガ・キーのオン/オフを指定します。このリソースの値は DIMsTriggerKeys型で,次の構造体へのポインタです。

                          typedef struct_DIMsTriggerKeys {
                                  short           num_of_on_keys;
                                  XIMTriggerkey   on_keys;
                                  short           num_of_off_keys;
                                  XIMTriggerkey   off_keys;
                          } DIMsTriggerKeysRec, *DIMsTriggerKeys;

on_keysには,入力メソッドをトリガ・オンできるキーのリストを指定します。 num_of_on_keysには,リストに含まれるキーの数を指定します。

off_keysには,入力メソッドをトリガ・オフさせるキーのリストを指定します。 num_of_off_keysには,リストに含まれるキーの数を指定します。

XIMTriggerkeyは次の構造体へのポインタです。

                          typedef struct_XIMTriggerkey
                          {
                              KeySym keysym;
                              unsigned long modifier;
                              unsigned long modifier_mask;
                          } XIMTriggerkeyRec, *XIMTriggerkey;

keysymフィールドには,たとえばXK_SPACEのような,入力メソッドをトリガ・ オン/オフさせるためのキーシンボルを指定します。

modifierフィールドには,トリガ・キー・シーケンスのキー・ マスクを指定します。ShiftMask,ControlMask,Mod1Mask(コンポーズ・ マスク),あるいはこれらの組み合わせのいずれかです。

modifier_maskは,KeyPressイベントがトリガ・キーであるかどうかの評価に使用されるマスクです。 たとえば,トリガー・オン(開始変換) キーがCtrl〜Shift<key>スペースである場合,有効なトリガ・ オン・キーの修飾子の状態は,ControlMaskに対してはon,ShiftMaskに対してはoff です。したがって,modifier_maskフィールドをControlMask | ShiftMask と設定するのに対して,modifierフィールドはControlMask と設定します。

入力メソッドのトリガ・オン/オフのテストのため,受け入れるどのキー・ イベントの修飾子も,最初にmodifier_maskによってマスキングされます。 この処理の結果は,修飾子の値と等しくなければなりません。

このリソースは,DIMsSetTriggerKeys()を呼び出すことによりいつでも変更することができます。DIMsSetTriggerKeys についての詳細は, 第6.5節を参照してください。

このリソースは任意です。このリソースを指定しない場合は静的イベント・ フローが使用されるため,すべてのイベントがクライアントからIMS に転送されます。イベント・フロー・モデルについての詳細は,第6.3.3項を参照してください。

6.4.13 DIMsNgetExtIMValuesCb

拡張XIM属性の値を得るために,クライアントがXGetIMValuesを呼び出すときに呼び出されるコールバックを指定します。 詳細については,第6.5節を参照してください。

このリソースは任意です。

6.4.10 DIMsNcreateICCb

クライアントがXCreateICを呼び出すときに呼び出されるコールバックを指定します。 このコールバックを呼び出す前にDIMsウィジェットが作成されます。IMS プログラマは,すべての初期化作業を行い,通常はDIMsウィジェットに対応する入力メソッド特定データを作成する必要があります。 詳細については,第6.5節を参照してください。

このリソースは任意です。

6.4.11 DIMsNdestroyICCb

クライアントがXDestroyICを呼び出すときに呼び出されるコールバックを指定します。IMS プログラマは,DIMsウィジェット作成時に作成したすべてのデータを解放しなければなりません。 詳細については,第6.5節を参照してください。

このリソースは任意です。

6.4.12 DIMsNsetExtICValuesCb

拡張XIC属性の値を設定するために,クライアントがXSetICValuesを呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.13 DIMsNgetExtICValuesCb

拡張XIC属性の値を取得するために,クライアントがXGetICValuesを呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.14 DIMsNsetICFocusCb

クライアントがXSetICFocusを呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.15 DIMsNunsetICFocusCb

クライアントがXUnsetICFocusを呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.16 DIMsNresetICCb

クライアントがXmbResetICまたはXwcResetICを呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5 節を参照してください。

このリソースは任意です。

6.4.17 DIMsNprocessEventCb

クライアントがIMSに要求されたイベントを転送するときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは必須です。

6.4.18 DIMsNsetAreaCb

XIC属性の1つとしてXNAreaを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.19 DIMsNsetAreaNeededCb

XIC属性の1つとしてXNAreaNeededを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.20 DIMsNsetSpotLocationCb

XIC属性の1つとしてXNSpotLocationを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.21 DIMsNsetColormapCb

XIC属性の1つとしてXNColormapを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.22 DIMsNsetStdColormapCb

XIC属性の1つとしてXNStdColormapを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.23 DIMsNsetForegroundCb

XIC属性の1つとしてXNForegroundを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.24 DIMsNsetBackgroundCb

XIC属性の1つとしてXNBackgroundを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.25 DIMsNsetBgPixmapCb

XIC属性の1つとしてXNBackgroundPixmapを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.26 DIMsNsetFontSetCb

XIC属性の1つとしてXNFontSetを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.27 DIMsNsetLineSpaceCb

XIC属性の1つとしてXNLineSpaceを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.28 DIMsNsetCursorCb

XIC属性の1つとしてXNCursorを設定するために,クライアントがXSetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.29 DIMsNgetFilterEventsCb

XIC属性の1つとしてXNFilterEventsを取得するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。このリソースが指定されない場合,IMSSLはKeyPressMask | KeyReleaseMask をクライアントに返します。

6.4.30 DIMsNgetAreaCb

XIC属性の1つとしてXNAreaを取得するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.31 DIMsNgetAreaNeededCb

XIC属性の1つとしてXNAreaNeededを取得するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.32 DIMsNgetSpotLocationCb

XIC属性の1つとしてXNSpotLocationを取得するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.33 DIMsNgetColormapCb

XIC属性の1つとしてXNColormapを取得するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.34 DIMsNgetStdColormapCb

XIC属性の1つとしてXNStdColormapを取得するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.35 DIMsNgetForegroundCb

XIC属性の1つとしてXNForegroundを取得するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.36 DIMsNgetBackgroundCb

XIC属性の1つとしてXNBackgroundを設定するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.37 DIMsNgetBgPixmapCb

XIC属性の1つとしてXNBackgroundPixmapを設定するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.38 DIMsNgetFontSetCb

XIC属性の1つとしてXNFontSetを取得するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.39 DIMsNgetLineSpaceCb

XIC属性の1つとしてXNLineSpaceを設定するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.40 DIMsNgetCursorCb

XIC属性の1つとしてXNCursorを設定するために,クライアントがXGetICValues を呼び出すときに呼び出されるコールバックを指定します。 詳細は,第6.5節を参照してください。

このリソースは任意です。

6.4.41 DIMsNclientdata

上記のコールバック・ルーチンへの引数の1つとして渡されるクライアント・ データを指定します。

このリソースは任意です。

6.5 パブリック・ルーチン

この節では,コールバック・ルーチンを含むIMSSLのすべてのパブリック・ ルーチンの使用方法を記述します。

DIMsClassCtxCreate

DIMsウィジェットで使用するクラス・コンテキストを作成する関数です。

フォーマット


    DIMsClassCtx DIMsClassCtxCreate  (head, name, arglist,
                                             argcount)

引数

DIMsClassCtx head;
char *name;
ArgList arglist;
Cardinal argcount;

戻り値

DIMsクラス・コンテキストIDが返されます。

説明

DIMsClassCtxCreateは,DIMsウィジェットのクラス・コンテキストのインスタンスを作成し, 対応するクラス・コンテキストIDを返します。 この関数を呼び出すことによって,このクラス・コンテキストのリストを作成することができます。

head DIMsクラス・コンテキスト・ リストのヘッドを指定します。この関数をはじめて呼び出す場合は,NULL 値を渡すことができます。別のクラス・コンテキストを作成する場合には, 最初の呼び出しに対する戻り値をこの関数に渡す必要があります。
name DIMsクラス名を指定します。DIMsクラス名は呼び出し後に解放されるヌル終了文字列でなければなりません。
arglist DIMsクラスのリソースの名称と値を含む引数リストを指定します。 リソースに割り当てられたメモリは, 呼び出した後に解放することができます。
argcount 引数リスト内の引数の数を指定します。

このルーチンは,DIMsClassInitializeが呼び出される前に,最低1回呼び出す必要があります。

DIMsクラスのリソースの完全な定義については,第6.4 節を参照してください。

DIMsSLInitialize

DEC入力サーバ・サービス層(IMSSL)を初期化する関数です。

フォーマット


    void DIMsSLInitialize (toplevel, ctx)

引数

Widget toplevel;
DIMsClassCtx ctx;

戻り値

戻り値はありません。

説明

DIMsSLInitializeは,DIMsクラス・コンテキストを作成した後に1 回だけ呼び出します。このルーチンはIMSSLを初期化します。

toplevel XtAppInitialize などによって返されるアプリケーション・シェル・ウィジェットのウィジェットID を指定します。
ctx DIMsウィジェット・クラス・リストのヘッドを指定します。

DIMsProtoInit

プロトコル層を初期化する関数です。

フォーマット


    void DIMsProtoInit (toplevel, app_context)

引数

Widget toplevel;
XtAppContext app_ context;

戻り値

戻り値はありません。

説明

DIMsProtoInitはプロトコル層を初期化します。このルーチンは, アプリケーション・シェル・ウィジェットが実現された後に1回だけ呼び出されなければなりません。

toplevel XtAppInitializeなどによって返されるアプリケーション・ シェル・ウィジェットのウィジェットID を指定します。toplevelは,この関数が呼び出される前に実現されていなければなりません。
app_context IMSのアプリケーション・ コンテキストを指定します。IMSプログラマは,XtAppInitializeまたはIntrinsics アプリケーション・コンテキスト初期化ルーチンを使用することによって,IMS アプリケーション・コンテキストを得ることができます。

DIMsPreEditStart

DIMsウィジェットに対応する入力コンテキストの前編集セッションを開始する関数です。

フォーマット


    int DIMsPreEditStart (w)

引数

Widget w;

戻り値

正の戻り値は,クライアントが前編集文字列に使用できる最大バイト数です。

戻り値-1は,前編集文字列のサイズが無制限であることを示します。

説明

DIMsPreEditStartは前編集セッションを開始します。 クライアント側では,PreeditStartコールバックが発行されると前編集バッファで使用できる最大値が返されます。 この呼び出しは入力スタイルがon-the-spot の場合に使用され,KeyReleaseイベントによってトリガされます。 詳細については,processEventCbの項を参照してください。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsPreEditDone

DIMsウィジェットに対応する入力コンテキストの前編集セッションを終了させる関数です。

フォーマット


    void DIMsPreEditDone (w)

引数

Widget w;

戻り値

戻り値はありません。

説明

DIMsPreEditDoneは前編集セッションを終了させます。クライアント側では,PreeditDone コールバックが発行されると前編集バッファが解放されます。 この呼び出しはスタイルがon-the-spotの場合のみ使用できます。

この呼び出しは,createICCb(),またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsIsIState

DIMsウィジェットに対応する入力コンテキストの前編集セッションが開始されているかどうかをチェックする関数です。

フォーマット


    Boolean DIMsIsIState (w)

引数

Widget w;

戻り値

DIMsウィジェットの前編集セッションが開始されている場合は, Trueが返されます。DIMsウィジェットの前編集セッションが開始されていない場合は,False が返されます。

説明

DIMsIsIStateは,DIMsウィジェットの前編集セッションが開始されているかどうかを示すブール値を返します。 この呼び出しは入力スタイルがon-the spot の場合のみ使用できます。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsPreEditDraw

DIMsウィジェットと一緒に前編集セッションを開始した入力コンテキストで, 文字列を挿入/削除/置換する関数です。

フォーマット


    void DIMsPreEditDraw  (w, caret, chg_first, chg_length,
                                  string, string_length, reditions,
                                  redition_length)

引数

Widget w;
int caret;
int chg_ first;
int chg_length;
void *string;
int string_ length;
XIMFeedback *renditions;
int rendition_ length;

戻り値

戻り値はありません。

説明

DIMsPreEditDrawは,入力コンテキストの前編集文字列を挿入/ 削除/置換するために使用されます。クライアント側では, PreeditDrawコールバックが発行されると,このルーチンの引数に与えられた情報に従って編集バッファが挿入/ 削除/置換されます。この呼び出しは入力スタイルがon-the-spot の場合のみ使用できます。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
caret 前編集文字列のカーソル・ オフセット(文字単位)を指定します。
chg_first 変更部分の開始位置( 文字単位)を指定します。
chg_ length 変更部分の長さ(文字単位)を指定します。
string 入力コンテキストに渡す文字列を指定します。 エンコーディングはDIMsEncoding(w) の戻り値に一致しなければなりません。IMSプログラマは, このデータにメモリを割り当てたら呼び出し後に解放する必要があります。
string_ length stringのバイト数を指定します。
renditions 文字ごとの表示情報を持つXIMFeedbackの配列へのポインタを指定します。
redition_ length reditionsの配列のサイズを指定します。

DIMsPreEditCaret

前編集の際にテキスト挿入位置を移動する関数です。

フォーマット


    void DIMsPreEditCaret  (w, position, direction, style)

引数

Widget w;  
int *position; (呼び出し側へ返す)
XIMCaretDirection direction;  
XIMCaretStyle; style;  

戻り値

戻り値はありません。

説明

DIMsPreEditCaretは,前編集の際に,テキスト挿入位置を移動させる関数です。 クライアント側では,PreeditCaretコールバックが発行されると新しいカレットの位置が返されます。 この関数を呼び出す場合には, position引数にカレットの位置を指定しなければなりません。 この関数は,同じ引数で前編集文字列の新しいオフセットを返します。 この呼び出しは入力スタイルがon-the-spotの場合のみ使用できます。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
position 前編集文字列内のカレット・ オフセットを指定します。呼び出し後には,初期位置からの新しいオフセット値が返されます。
direction カレットが移動する方向を指定します。
style カレットのフィードバックを指定します。

DIMsStatusStart

DIMsウィジェットに対応する入力コンテキストの状態更新セッションを開始する関数です。

フォーマット


    void DIMsStatusStart (w)

引数

Widget w;

戻り値

戻り値はありません。

説明

DIMsStatusStartは,状態領域を更新する前に呼び出される必要があります。 クライアント側ではStatusStartが発行されます。この呼び出しはXIMStatusCallback にのみ使用できます。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsStatusDone

DIMsウィジェットに対応する入力コンテキストの状態更新セッションを終了させます。

フォーマット


    void DIMsStatusDone (w)

引数

Widget w;

戻り値

戻り値はありません。

説明

DIMsStatusDoneは,状態領域を更新した後に呼び出す必要があります。 クライアント側では,StatusDoneコールバックが発行されます。 この呼び出しは,XIMStatusCallbackにのみ使用できます。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsStatusDraw

DIMsウィジェットに対応する入力コンテキストの状態領域を更新する関数です。

フォーマット


    void DIMsStatusDraw  (w, type, string, string_length,
                                 reditions, renditions_length,
                                 bitmap)

引数

Widget w;
XIMStatusDataType type;
void *string;
int string_ length;
XIMFeedback *renditions;
int rendition_ length;
Pixmap bitmap;

戻り値

戻り値はありません。

説明

DIMsStatusDrawは,入力コンテキストの状態領域を更新します。 クライアント側では,StatusDrawコールバックが発行されます。 この呼び出しは,XIMStatusCallbackにのみ使用できます。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs を指定します。
type テキストまたはビットマップのいずれを使用するかを指定します。
string 状態領域を更新するためのテキストを指定する。 エンコーディングはDIMsEncoding(w)の戻り値と一致しなければなりません。 このデータにメモリを割り当てたら呼び出し後に解放する必要があります。
string_ length stringのバイト数を指定します。
renditions 文字ごとの表示情報を持つXIMFeedbackの配列へのポインタを指定します。
rendition_ length renditionsのメンバ数を指定します。
bitmap typeがXIMBitmapTypeの場合にビットマップを指定します。

DIMsGeometryNegotiation

クライアント・アプリケーションと,ジオメトリについての折衝を開始する関数です。

フォーマット


    Boolean DIMsGeometryNegotiation (w)

引数

Widget w;

戻り値

クライアントがGeometryNegotiationコールバックをサポートする場合は,True が返されます。クライアントがGeometryNegotiationコールバックをサポートしない場合は,False が返されます。

説明

DIMsGeometryNegotiationは,ジオメトリについてのクライアントとの折衝を開始します。 クライアント側では, GeometryNegotiationコールバックが発行されます。この呼び出しは入力スタイルがoff-the-spot の場合のみ使用できます。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsSetEventsForward

DIMsウィジェットに対応する入力コンテキストへの,クライアントからのイベント転送を有効または無効にします。

フォーマット


    void DIMsSetEventsForward (w, state)

引数

Widget w;
Boolean state;

戻り値

戻り値はありません。

説明

DIMsSetEventsForwardは,XFilterEvents()による,クライアントから入力コンテキストへのイベント転送を有効, または無効にします。 この関数は,IMSが動的イベント・フロー・モデルをサポートする場合にのみ有用です。 イベント・フロー・モデルについての詳細は,第6.3.3項を参照してください。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
state イベント・フロー状態を指定します。 クライアントによる入力コンテキストへのイベント転送を有効にする場合はTrue を指定し,クライアントがトリガオン・キーを受信するまで入力コンテキストへのイベント転送を無効にするにはFalse を指定します。

DIMsIsEventsForwarded

クライアント・アプリケーションから入力コンテキストにイベントが転送されているかどうかをチェックする関数です。

フォーマット


    Boolean DIMsIsEventsForwarded (w)

引数

Widget w;

戻り値

クライアントからのイベント転送が有効になっている場合には, Trueが返されます。クライアントからのイベントの転送が無効になっている場合には,False が返されます。

説明

DIMsIsEventsForwardedは,クライアント・アプリケーションから入力コンテキストにイベントが転送されているかどうかをチェックします。 動的イベント・フロー・モデル使用時に,クライアントからのイベント転送を開始/ 停止する方法については,DIMsSetEventsForwardの項を参照してください。 イベント・ フロー・モデルについての詳細については,第6.3.3 項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsCommit

確定された文字列をクライアン・アプリケーショントに送信する関数です。

フォーマット


    void DIMsCommit (w, string, string_length)

引数

Widget w;
void *string;
int string_ length;

戻り値

戻り値はありません。

説明

DIMsCommitは,確定された文字列をクライアントの入力コンテキストに送信します。 クライアントは,XmbLookupString またはXwcLookupStringを使用して,確定された文字列を得ることができます。 入力スタイルがon-the-spotの場合,IMSプログラマは, DIMsPreEditDoneを呼び出した後にこの関数を呼び出さなければならないことに注意してください。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアントと入力サーバとの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCbの項およびそれ以降のいくつかの項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
string 確定された文字列を指定します。 エンコーディングについてはDIMsEncodingによって返される値に一致する必要があります。 詳細についてはDIMsEncodingの項を参照してください。IMSプログラマは, このデータにメモリを割り当てたら呼び出し後に解放する必要があります。
string_length stringのバイト数を指定します。

DIMsEncoding

クライアント・アプリケーションと入力サーバとで同意したエンコーディングを返す関数です。

フォーマット


    char *DIMsEncoding (w)

引数

Widget w;

戻り値

エンコーディングを指定するヌル終了文字列を返します。この関数が返す文字列は解放してはいけません。

説明

DIMsEncodingによってクライアント・アプリケーションと入力サーバが同意したエンコーディングを取得することができます。 クライアント・ アプリケーションがXOpenIMを呼び出すと,XIMライブラリは使用するエンコーディングについて入力サーバと折衝し, 同意されたエンコーディングがDIMs ウィジェット・データとしてIMSSLに保持されます。 このエンコーディングは,前編集文字列(on-the-spotの場合),確定された文字列, およびresetICCbに返される文字列に使用されます。

エンコーディングの設定方法についての詳細は,第6.4.7項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMslocale

DIMsウィジェットに対応する入力コンテキストのロケールを返す関数です。

フォーマット


    char *DIMsLocale (w)

引数

Widget w;

戻り値

入力コンテキストのロケールを指定するヌル終了文字列が返されます。 返される文字列は解放してはいけません。

説明

DIMsLocaleによって,入力コンテキストのローケル情報を取得することができます。 クライアント・アプリケーションがXOpenIM を呼び出すと,Ximに対応するロケールが入力サーバに送信されます。 IMSSLは,このロケールをDIMsウィジェット・データとして保持します。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsInputStyle

DIMsウィジェットに対応する入力コンテキストの入力スタイルを返す関数です。

フォーマット


    XIMStyle DIMsInputStyle (W)

引数

Widget w;

戻り値

入力コンテキストの入力スタイルを指定するXIMStyle型の値を返します。

説明

DIMsInputStyleによって,入力コンテキストの入力スタイルが取得されます。 クライアント・アプリケーションがXCreateICを呼び出す場合には, 入力スタイルを指定して,入力サーバに送信する必要があります。IMSSL は,この入力スタイルをDIMsウィジェットのデータとして保持します。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsClientWindow

DIMsウィジェットに対応する入力コンテキストのXNClientWindowのXIC値を返す関数です。

フォーマット


    Window DIMsClientWindow (W)

引数

Widget w;

戻り値

入力コンテキストのクライアント・ウィンドウを指定するWindow型の値を返します。

説明

DIMsClientWindowは,入力コンテキストのクライアント・ ウィンドウを取得します。クライアント・アプリケーションがXCreateIC を呼び出す場合には,クライアント・ウィンドウを指定する必要があります。IMSSL は,このクライアント・ウィンドウをウィジェット・ データとして保持します。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsFocusWindow

DIMsウィジェットに対応する入力コンテキストのXNFocusWindowのXIC値を返す関数です。

フォーマット


    Window DIMsFocusWindow (w)

引数

Widget w;

戻り値

入力コンテキストのフォーカス・ウィンドウを指定するWindow型の値を返します。

説明

DIMsFocusWindowは,入力コンテキストのフォーカス・ウィンドウを取得します。 クライアント・アプリケーションが,XCreateIC またはXSetICValuesを呼び出す場合には,フォーカス・ウィンドウを指定する必要があります。IMSSL は,このウィンドウをウィジェット・データとして保持します。 フォーカス・ウィンドウが指定されない場合は,クライアント・ ウィンドウが返されます。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsUserData

入力コンテキストの固有データを返す関数です。

フォーマット


    Opaque *DIMsUserData (w)

引数

Widget w;

戻り値

入力コンテキストの固有データを指すポインタを返します。データ型は任意です。

説明

DIMsUserDataは,入力コンテキストの固有データを取得します。 このデータは,クライアント・アプリケーションがXCreateICを呼び出し, コールバックが呼び出される場合に作成されます。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。

DIMsSetTriggerKeys

すべてのクライアントのトリガ・キーを変更する関数です。

フォーマット


    void DIMsSetTriggerKeys (new_keys)

引数

DIMsTriggerKeys new_ keys;

戻り値

戻り値はありません。

説明

DIMsSetTriggerKeysは,入力サーバのトリガ・オン/オフのためのキーを変更します。 この呼び出しによって,すべてのDIMsクラスの DIMsNtriggerKeysリソースが変更され,新しいトリガ・キーがすべてのクライアントに送信されます。 イベント・フロー・モデルにおけるトリガ・ キーについては,第6.3.3項を参照してください。

この呼び出しは,createICCb,またはreason引数としてDimCR_CreateIC を設定するようなコールバックでは,クライアント・アプリケーションと入力サーバの接続がまだ確立されていないため使用できないことに注意してください。 このようなコールバックの詳細については,setAreaCb の項およびそれ以降のいくつかの項を参照してください。

new_keys IMSの新しいトリガ・ キーを指定します。DIMsTriggerKeysのデータ型の定義は第6.4.8項を参照してください。IMS プログラマは, このポインタを後で解放しなければなりません。

getExtIMValuesCb

このコールバック関数は,拡張(非標準)XIMの属性値を取得するために呼び出されます。

フォーマット


    int getExtIMValuesCb  (client_data, attributes,
                                  value_len, value)

引数

Opaque *client_ data;  
char *attributes;  
short *value_ len; (呼び出し側へ返す)
Oparque **value; (呼び出し側へ返す)

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getExtIMValuesは, リソースDIMsNgetExtIMValuesCbによって指定されるコールバック関数です。 DIMsNgetExtIMValuesCbについては,第6.4.13項を参照してください。 入力サーバは, 拡張(非標準)XIMのいくつかの属性を定義することができ,クライアント・ アプリケーションは,XGetIMValuesを呼び出してこれらの属性の値を検索することができます。IMS に拡張XIM属性を追加する方法については, 第6.4.4項を参照してください。

client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 詳細については,第6.4.41項を参照してください。
attributes XIM属性名を指定します。
value_ len 属性値のサイズ(バイト単位)を呼び出し元へ返します。 valueのデータ型がstring_tではない場合, このフィールドは任意です。第6.4.4項を参照してください。
value 呼び出し側に属性値のポインタを返します。IMS プログラマは,このデータにメモリを割り当てなければなりません。 これは後にIMSSLによって解放されます。

createICCb

このコールバック関数は,入力コンテキストおよびそれに対応するDIMsウィジェットが作成される場合に呼び出されます。

フォーマット


    int createICCb (w, client_data, widget_data)

引数

Widget w;  
Opaque *client_data;  
Opaque **widget_ data; 呼び出し側へ返す

戻り値

コールバックが正常終了した場合,IMSSLに1が返されます。コールバックが異常終了した場合,IMSSL に0が返されます。

説明

createICCbは,リソースDIMsNcreateICCbによって指定されるコールバック関数です。 DIMsNcreateICCbについては, 第6.4.10項を参照してください。 この段階ではクライアント・アプリケーションと入力サーバはまだ接続されていないため, このコールバックで次のルーチンを呼び出すことはできません。
DIMsPreEditStart()
DIMsPreEditDone()
DIMsPreEditDraw()
DIMsPreEditCaret()
DIMsStatusStart()
DIMsStatusDone()
DIMsStatusDraw()
DIMsGeometryNegotiation()
DIMsSetEventsForward()
DIMsCommit()
DIMsSetTriggerKeys()

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 DIMsNclientdataについての詳細は, 第6.4.41項を参照してください。
widget_data ウィジェットに対応する入力コンテキスト固有データのポインタを呼び出し側に返します。 このデータは,DIMsUserData(w)を呼び出して後で検索することができます。IMS プログラマは,このデータにメモリ割り当て, destroyICCbを使用して解放する必要があります。

destroyICCb

このコールバック関数は,入力コンテキストおよびそれに対応するDIMsウィジェットを破棄する場合に呼び出されます。

フォーマット


    int destroyICCb (w, client_data)

引数

Widget w;
Opaque *client_ data;

戻り値

コールバックが正常終了した場合,IMSSLに1が返されます。コールバックが異常終了した場合,IMSSL に0が返されます。

説明

destroyICCbは,リソースDIMsNdestroyICCbによって指定されるコールバック関数です。 DIMsNdestroyICCbについては, 第6.4.11項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 DIMsNclientdataについては,第6.4.41項を参照してください。

setExtICValuesCb

このコールバック関数は,拡張(非標準)XIC属性の値を設定する場合に呼び出されます。

フォーマット


    int setExtICValuesCb  (w, client_data, attributes,
                                  value_len, value, attribute_flag,
                                  reason)

引数

Widget w;
Opaque *client_ data;
char *attributes;
short value_ len;
Opaque *value;
DIMsAttributesType attribute_ flag;
int reason;

戻り値

コールバックが正常終了した場合,IMSSLに1が返されます。コールバックが異常終了した場合,IMSSL に0が返されます。

説明

setExtICValuesCbは,リソース DIMsNsetExtICValuesCbによって指定されるコールバック関数です。 DIMsNsetExtICValuesCbについては,第6.4.12項を参照してください。 入力サーバはいくつかの拡張( 非標準)XIC属性を定義でき,クライアントは,XSetICValues を呼び出してこれらの属性の値を設定することができます。 入力サーバに拡張XIC属性を追加する方法については,第6.4.5項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 DIMsNclientdataについては,第6.4.41項を参照してください。
attributes 拡張XIC値の名称を指定します。
value_len valueフィールドのサイズ( バイト単位)を指定します。この属性のデータ型がstring_tでない場合, このフィールドは無視できます。第6.4.4項を参照してください。
value 属性値のポインタを指定します。 属性値のデータ型は任意ですが,IMSプログラマは,実際のデータ型へのポインタを属性に従ってキャストする必要があります。
attribute_flag XICの属性のタイプを指定します。 DIMsAttributeTypeのデータ型は次のとおりです。
     typedef enum {
                 GenericAttributesType,
                 PreeditAttributesType,
                 StatusAttributesType
     }DIMsAttributesType;

GenericAttributesTypeは,XICの値がPreeditAttributeおよびStatusAttribute のどちらにも属さないことを示します。

PreeditAttributesTypeは,XICの値がPreeditAttributeに属すことを示します。

StatusAttributesTypeは,XICの値がStatusAttribute に属すことを示します。

reason コールバックの理由を指定します。 DimCR_CreateICまたはDimCR_SetICValuesのいずれかを指定します。 DimCR_CreateICはクライアントのXCreateIC によってコールバックが開始されることを意味し,DimCR_ SetICValuesはクライアントのXSetICValuesによってコールバックが開始されることを意味します。

getExtICValuesCb

このコールバック関数は,拡張(非標準)XIC属性の値を取得するために呼び出されます。

フォーマット


    int getExtICValuesCb  (w, client_data, attribute,
                                  value_len, value, attr_flag)

引数

Widget w;  
Opaque *client_data;  
char *attributes;  
short *value_ len; (呼び出し側へ返す)
Opaque **value; (呼び出し側へ返す)
DIMsAttributesType attr_ flag;  

戻り値

コールバックが正常終了した場合,IMSSLに1が返されます。コールバックが異常終了した場合,IMSSL に0が返されます。

説明

getExtICValuesCbは,リソース DIMsNgetExtICValuesCbによって指定されるコールバック関数です。 DIMsNgetExtICValuesCbについては第6.4.13項を参照してください。 入力サーバはいくつかの拡張( 非標準)XICの属性を定義することができ,クライアントはXGetICValues を呼び出してこれらの属性の値を検索することができます。 入力サーバに拡張XIC属性を追加する方法については,第6.4.5項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 DIMsNclientdataについては第6.4.41項を参照してください。
attributes 拡張XIC値の名称を指定します。
value_len valueフィールドのサイズ(バイト単位)を呼び出し側に返します。 この属性のデータ型がstring_tでない場合,このフィールドは無視できます。 第6.4.4項を参照してください。
value 属性値のポインタを呼び出し側に返します。IMSプログラマは,このデータにメモリを割り当てなければなりません。 このメモリは,IMSSL によって後で解放されます。
attr_ flag 属性のタイプを指定します。データ型の定義についてはsetExtICValuesCb の項を参照してください。

setICFocusCb

このコールバック関数は,入力コンテキストがフォーカスを取得した場合に呼び出されます。

フォーマット


    int setICFocusCb (w, client_data)

引数

Widget w;
Opaque *client_ data;

戻り値

コールバックが正常終了した場合,IMSSLに1が返されます。コールバックが異常終了した場合,IMSSL に0が返されます。

説明

setICFocusCbは,リソース DIMsNsetICFocusCbによって指定されるコールバック関数です。 DIMsNsetICFocusCbについては,第6.4.14項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 DIMsNclientdataについては第6.4.41項を参照してください。

unsetICFocusCb

このコールバック関数は,入力コンテキストがフォーカスを失った場合に呼び出されます。

フォーマット


    int unsetICFocusCb (w, client_data)

引数

Widget w;
Opaque *client_ data;

戻り値

コールバックが正常終了した場合,IMSSLに1が返されます。コールバックが異常終了した場合,IMSSL に0が返されます。

説明

setICFocusCbは,リソースDIMsNunsetICFocusCbによって指定されるコールバック関数です。 DIMsNunsetICFocusCbについては, 第6.4.15項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 DIMsNclientdataについては第6.4.41項を参照してください。

resetICCb

このコールバック関数は,入力コンテキストが再設定される場合に呼び出されます。

フォーマット


    int resetICCb  (w, client_data, string, string_length)

引数

Widget w;  
Opaque *client_data;  
void **string; (呼び出し側へ返す)
int *string_ length; (呼び出し側へ返す)

戻り値

コールバックが正常終了した場合,IMSSLに1が返されます。コールバックが異常終了した場合,IMSSL に0が返されます。

説明

resetICCbは,リソースDIMsNresetICCbによって指定されるコールバック関数です。 DIMsNresetICCbについては 第6.4.16項を参照してください。 現在の前編集セッションは, このコールバックが実行されてから終了します。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 DIMsNclientdataについては, 第6.4.41項を参照してください。
string DIMsEncoding(w)によって与えられたエンコーディングで現在の前編集文字列を返します。IMS プログラマは,このデータにメモリを割り当てなければなりません。 このメモリはIMSSLによって後で解放されます。
string_length stringのバイト数を返します。

processEventCb

このコールバック関数は,入力コンテキストが入力サーバにイベントを転送する場合に呼び出されます。

フォーマット


    int processEventCb  (w, client_data, event, send_back)

引数

Widget w;  
Opaque *client_data;  
XEvent *event;  
Boolean *send_back; (呼び出し側へ返す)

戻り値

コールバックが正常終了した場合,IMSSLに1が返されます。コールバックが異常終了した場合,IMSSL に0が返されます。

説明

processEventCb は,リソース DIMsNprocessEventCbによって指定されるコールバック関数です。 DIMsNprocessEventCbについては,第6.4.17項を参照してください。

クライアント・アプリケーションがXFilterEventを呼び出すと, XFilterEventの値を取得するXGetICValues関数で入力サーバによって選択されたイベントが入力サーバに転送され, このコールバックを呼び出します。 入力サーバに必要なイベントの選択方法についてはgetFilterEventsCbの項を参照してください。 入力サーバによっては,これらのイベントは,文字列の確定,前編集セッションの開始または終了, あるいはその他の状況を引き起こします。

ただし,入力スタイルがon-the-spotの場合,1つのKeyPressイベントでDIMsCommit ,DIMsPreEditDone,およびDIMsPreEditStartを同時に呼び出すことはできません。 同時に呼び出すと,クライアント・アプリケーションは, 確定文字列およびコールバックを正しい順序で得ることができません。 このため,KeyPressイベントでDIMsPreEditDoneとDIMsCommitを呼び出したあとで, 対応するKeyReleaseイベントでDIMsPreEditStartを呼び出して次の前編集セッションを開始してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータのポインタを指定します。 DIMsNclientdataについては,第6.4.41項を参照してください。
event クライアント・アプリケーションから転送するイベントを指定します。
send_back イベントをクライアント・アプリケーションに返送するかどうかを指定します。True が返されるとXFilterEventはクライアント・アプリケーションにFalse を返し,Falseの場合,イベントはクライアント・アプリケーションによって破棄されます。

setAreaCb

このコールバック関数は,XIC属性XNAreaの値を設定するために呼び出されます。

フォーマット


    int setAreaCb  (w, client_data, reason, attribut_flag)

引数

Widget w;
Opaque *client_data;
int reason;
XRectangle *value;
DIMsAttributesType attribute_ flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setAreaCbは,リソースDIMsNsetAreaCbによって指定されるコールバック関数です。 DIMsNsetAreaCbについては, 第6.4.18項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。 DIMsNclientdataについては, 第6.4.41項を参照してください。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value XRectangle型の属性値へのポインタを指定します。
attribute_flag PreeditAttributeまたはStatusAttributeのどちらに属するか, XIC属性のタイプを指定します。DIMsAttributesTypeのデータ型については,setExtICValuesCb の項を参照してください。

setAreaNeededCb

このコールバック関数は,XIC属性XNAreaNeededの値を設定するために呼び出されます。

フォーマット


    int setAreaNeededCb  (w, client_data, reason, value,
                                 attribute_flag)

引数

Widget w;
Opaque *client_data;
int reason;
XRectangle *value;
DIMsAttributesType attribute_ flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setAreaNeededCbは,リソース DIMsNsetAreaNeededCbによって指定されるコールバック関数です。 DIMsNsetAreaNeededCbについては,第6.4.19項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。 DIMsNclientdataについては, 第6.4.41項を参照してください。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value XRectangle型の属性値へのポインタを指定します。
attribute_flag PreeditAttributeまたはStatusAttributeのどちらに属するか, XIC属性のタイプを指定します。DIMsAttributesTypeのデータ型については,setExtICValuesCb の項を参照してください。

setSpotLocationCb

このコールバック関数は,XIC属性XNSpotLocationの値を設定するために呼び出されます。

フォーマット


    int setSpotLocationCb  (w, client_data, reason, value,
                                   attr_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
XPoint *value;
DIMsAttributesType attr_flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setSpotLocationCbは,リソース DIMsNsetSpotLocationCbによって指定されるコールバック関数です。 DIMsNsetSpotLocationCbについては,第6.4.20項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。 DIMsNclientdataについての詳細は, 第6.4.41項を参照してください。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value XPoint型の属性値へのポインタを指定します。
attri_flag PreeditAttribute またはStatusAttributeのどちらに属するか,XIC属性のタイプを指定します。 DIMsAttributesTypeのデータ型については,setExtICValuesCbの項を参照してください。

setColormapCb

このコールバック関数は,XIC属性XNColormapの値を設定するために呼び出されます。

フォーマット


    int setColormapCb  (w, client_data, reason, value,
                               attribute_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
Colormap *value;
DIMsAttributesType attribute_flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setColormapCbは,リソース DIMsNsetColormapCbによって指定されるコールバック関数です。 DIMsNsetColormapCbについては,第6.4.21項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。 DIMsNclientdataについての詳細は, 第6.4.41項を参照してください。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value Colormap型の属性値へのポインタを指定します。
attribute_flag PreeditAttribute またはStatusAttributeのどちらに属するか,XIC属性のタイプを指定します。 DIMsAttributesTypeのデータ型については,setExtICValuesCbの項を参照してください。

setStdColormapCb

このコールバック関数は,XIC属性XNStdColormapの値を設定するために呼び出されます。

フォーマット


    int setStdColormapCb  (w, client_data, reason, value,
                                  attr_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
Atom *value;
DIMsAttributesType attr_flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setStdColormapCbは,リソース DIMsNsetStdColormapCbによって指定されるコールバック関数です。 DIMsNsetStdColormapCbについては,第6.4.22項を参照してください。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。 DIMsNclientdataについての詳細は, 第6.4.41項を参照してください。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value Atom型の属性値へのポインタを指定します。
attri_flag PreeditAttribute またはStatusAttributeのどちらに属するか,XIC属性のタイプを指定します。 DIMsAttributesTypeのデータ型については,setExtICValuesCbの項を参照してください。

setForegroundCb

このコールバック関数は,XIC属性XNForegroundの値を設定するために呼び出されます。

フォーマット


    int setForegroundCb  (w, client_data, reason, value,
                                 attribute_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
unsigned long *value;
DIMsAttributesType attribute_ flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setForegroundCbは,リソース DIMsNsetForegroundCbによって指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value 符号なしlong 型の属性値へのポインタを指定します。
attribute_flag PreeditAttribute またはStatusAttributeのどちらに属するか,XIC属性のタイプを指定します。

setBackgroundCb

このコールバック関数は,XIC属性XNBackgroundの値を設定するために呼び出されます。

フォーマット


    int setBackgroundCb  (w, client_data, reason, value,
                                 attribute_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
unsigned long *value;
DIMsAttributesType attribute_ flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setBackgroundCbは,リソース DIMsNsetBackgroundCbによって指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value 符号なしlong 型の属性値へのポインタを指定します。
attribute_flag PreeditAttribute またはStatusAttributeのどちらに属するか,XIC属性のタイプを指定します。

setBgPixmapCb

このコールバック関数は,XIC属性XNBackgroundPixmapの値を設定するために呼び出されます。

フォーマット


    int setBgPixmapCb  (w, client_data, reason, value,
                               attribute_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
Pixmap *value;
DIMsAttributesType attribute_flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setBgPixmapCbは,リソース DIMsNsetBgPixmapCbによって指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value Pixmap型の属性値へのポインタを指定します。
attribute_flag PreeditAttribute またはStatusAttributeのどちらに属するか,XIC属性のタイプを指定します。

setFontSetCb

このコールバック関数は,XIC属性XNFontSetの値を設定するために呼び出されます。

フォーマット


    int setFontSetCb  (w, client_data, reason, value,
                              attribute_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
XFontSet *value;
DIMsAttributesType attribute_flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setFontSetCbは,リソース DIMsNsetFontSetCbによって指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value XFontSet型の属性値へのポインタを指定します。
attribute_flag PreeditAttribute またはStatusAttributeのどちらに属するか,XIC属性のタイプを指定します。

setLineSpaceCb

このコールバック関数は,XIC属性XNLineSpaceの値を設定するために呼び出されます。

フォーマット


    int setLineSpaceCb  (w, client_data, reason, value,
                                attribute_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
int *value;
DIMsAttributesType attribute_flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setLineSpaceCbは,リソース DIMsNsetLineSpaceCbによって指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value 整数型の属性値へのポインタを指定します。
attribute_flag PreeditAttributeまたはStatusAttribute のどちらに属するか,XIC属性のタイプを指定します。

setCursorCb

このコールバック関数は,XIC属性XNCursorの値を設定するために呼び出されます。

フォーマット


    int setLineSpaceCb  (w, client_data, reason, value,
                                attribute_flag)

引数

Widget w;
Opaque *client_ data;
int reason;
Cursor *value;
DIMsAttributesType attribute_flag;

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

setCursorCbは,リソースDIMsNsetCursorCbによって指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。
reason コールバックの理由を指定します。DimCR_CreateICまたは DimCR_SetICValuesのいずれかを指定します。DimCR_ CreateICはクライアントのXCreateICによってコールバックが開始されることを意味し, DimCR_SetICValuesはクライアントのXSetICValues によってコールバックが開始されることを意味します。
value Cursor型の属性値へのポインタを指定します。
attribute_flag PreeditAttribute またはStatusAttributeのどちらに属するか,XIC属性のタイプを指定します。

getFilterEventsCb

このコールバック関数は,XIC属性XNFilterEventsの値を得るために呼び出されます。

フォーマット


    int getFilterEventsCb (w, client_data, value)

引数

Widget w;  
Opaque *client_data;  
unsigned long **value; (呼び出し側へ返す)

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getFilterEventsCbは,リソース DIMsNgetFilterEventsCbで指定されるコールバック関数です。

このコールバック・リソースが設定されていない場合,IMSSLは省略時のイベント・ マスクとしてKeyPressMask | KeyReleaseMaskをクライアント・ アプリケーションへ返します。この値が返された場合は,クライアントから入力サーバへのイベント・ フローが増えることによりネットワークの負荷が増加し,IMS の性能に直接影響するため注意が必要です。必要ないイベント・ マスクは削除するようにしてください。たとえば,DIMsウィジェットの入力スタイルがon-the spot でない場合は,KeyReleaseMaskの使用を削除することができます。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,符号なしlong 型の属性値へのポインタを返します。IMSプログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。

getAreaCb

このコールバック関数は,XIC属性XNAreaの値を得るために呼び出されます。

フォーマット


    int getAreaCb (w, client_data, value, attribute_flag)

引数

Widget w;  
Opaque *client_data;  
XRectangle **value; (呼び出し側へ返す)
DIMsAttributesType attribute_flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getAreaCbは,リソースDIMsNgetAreaCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,XRectangle型の属性値へのポインタを返します。IMS プログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。
attribute_ flag PreeditAttributeまたはStatusAttributeのどちらに属するか,XIC 属性のタイプを指定します。

getAreaNeededCb

このコールバック関数は,XIC属性XNAreaNeededの値を得るために呼び出されます。

フォーマット


    int getAreaNeededCb  (w, client_data, value,
                                 attribute_flag)

引数

Widget w;  
Opaque *client_data;  
XRectangle **value; (呼び出し側へ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getAreaNeededCbは,リソース DIMsNgetAreaNeededCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,XRectangle型の属性値へのポインタを返します。IMS プログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。
attribute_ flag PreeditAttributeまたはStatusAttributeのどちらに属するか,XIC 属性のタイプを指定します。

getSpotLocationCb

このコールバック関数は,XIC属性XNSpotLocationの値を得るために呼び出されます。

フォーマット


    int getSpotLocationCb  (w, client_data, value,
                                   attribute_flag)

引数

Widget w;  
Opaque *client_data;  
XPoint **value; (呼び出し側へ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getSpotLocationCbは,リソース DIMsNgetSpotLocationCbリソースによって指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,XPoint型の属性値へのポインタを返します。IMS プログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。
attribute_ flag PreeditAttributeまたはStatusAttributeのどちらに属するか,XIC 属性のタイプを指定します。

getColormapCb

このコールバック関数は,XIC属性XNColormapの値を得るために呼び出されます。

フォーマット


    int getColormapCb  (w, client_data, value,
                               attribute_flag)

引数

Widget w;  
Opaque *client_data;  
Colormap **value; (呼び出し側へ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getColormapCbは,リソース DIMsNgetColormapCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data リソース DIMsNclientdataによって指定されるデータへのポインタを指定します。
value 呼び出し側に,Colormap型の属性値へのポインタを返します。IMSプログラマは, このデータにメモリを割り当てる必要があります。このメモリ割り当てはIMSSL によって後で解放されます。
attribute_flag PreeditAttributeまたはStatusAttribute のどちらに属するか,XIC属性のタイプを指定します。

getStdColormapCb

このコールバック関数は,XIC属性XNStdColormapの値を得るために呼び出されます。

フォーマット


    int getStdColormapCb (w, client_data, value,
                                 attribute_flag)

引数

Widget w;  
Opaque *client_data;  
Atom **value; (呼び出し側ヘ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getStdColormapCbは,リソース DIMsNgetStdColormapCbによって指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,Atom型の属性値へのポインタを返します。IMS プログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。
attribute_ flag PreeditAttributeまたはStatusAttributeのどちらに属するか,XIC 属性のタイプを指定します。

getForegroundCb

このコールバック関数は,XIC属性XNForegroundの値を得るために呼び出されます。

フォーマット


    int getForegroundCb (w, client_data, value,
                                attribute_flag)

引数

Widget w;  
Opaque *client_data;  
unsigned long **value; (呼び出し側ヘ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getForegroundCbは,リソース DIMsNgetForegroundCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。 DIMsNclientdataについては, 第6.4.41項を参照してください。
value 呼び出し側に, 符号なしlong型の属性値へのポインタを返します。IMSプログラマは, このデータにメモリを割り当てる必要があります。このメモリ割り当てはIMSSL によって後で解放されます。
attribute_flag PreeditAttributeまたはStatusAttribute のどちらに属するか,XIC属性のタイプを指定します。

getBackgroundCb

このコールバック関数は,XIC属性XNBackgroundの値を得るために呼び出されます。

フォーマット


    int getBackgroundCb (w, client_data, value,
                                attribute_flag)

引数

Widget w;  
Opaque *client_data;  
unsigned long **value; (呼び出し側ヘ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getBackgroundCbは,リソース DIMsNgetBackgroundCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,符号なしlong 型の属性値へのポインタを返します。IMSプログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。
attribute_ flag PreeditAttributeまたはStatusAttributeのどちらに属するか,XIC 属性のタイプを指定します。

getBgPixmapCb

このコールバック関数は,XIC属性XNBackgroundPixmapの値を得るために呼び出されます。

フォーマット


    int getBgPixmapCb (w, client_data, value,
                              attribute_flag)

引数

Widget w;  
Opaque *client_data;  
Pixmap **value; (呼び出し側ヘ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getBgPixmapCbは,リソース DIMsNgetBgPixmapCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,Pixmap型の属性値へのポインタを返します。IMS プログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。
attribute_ flag PreeditAttributeまたはStatusAttributeのどちらに属するか,XIC 属性のタイプを指定します。

getFontSetCb

このコールバック関数は,XIC属性XNFontSetの値を得るために呼び出されます。

フォーマット


    int getFontSetCb (w, client_data, value, attribute_flag)

引数

Widget w;  
Opaque *client_data;  
XFontSet **value; (呼び出し側に返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getFontSetCbは,リソース DIMsNgetFontSetCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,XFontSet型の属性値へのポインタを返します。IMS プログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。
attribute_ flag PreeditAttributeまたはStatusAttributeのどちらに属するか,XIC 属性のタイプを指定します。

getLineSpaceCb

このコールバック関数は,XIC属性XNLineSpaceの値を得るために呼び出されます。

フォーマット


    int getLineSpaceCb (w, client_data, value,
                               attribute_flag)

引数

Widget w;  
Opaque *client_data;  
int **value; (呼び出し側ヘ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getLineSpaceCbは,リソース DIMsNgetLineSpaceCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。
value 呼び出し側に,整数型の属性値へのポインタを返します。IMS プログラマは,このデータにメモリを割り当てる必要があります。 このメモリ割り当てはIMSSLによって後で解放されます。
attribute_ flag PreeditAttributeまたはStatusAttributeのどちらに属するか,XIC 属性のタイプを指定します。

getCursorCb

このコールバック関数は,XIC属性XNCursorの値を得るために呼び出されます。

フォーマット


    int getCursorCb (w, client_data, value, attribute_flag)

引数

Widget w;  
Opaque *client_data;  
Cursor **value; (呼び出し側ヘ返す)
DIMsAttributesType attribute_ flag;  

戻り値

このコールバックが正常終了した場合,IMSSLに1が返されます。このコールバックが異常終了した場合,IMSSL に0が返されます。

説明

getCursorCbは,リソースDIMsNgetCursorCbで指定されるコールバック関数です。

w 入力コンテキストに対応するDIMs ウィジェットを指定します。
client_data DIMsNclientdataリソースで指定されるデータへのポインタを指定します。 DIMsNclientdataについては, 第6.4.41項を参照してください。
value 呼び出し側に,Cursor 型の属性値へのポインタを返します。IMSプログラマは, このデータにメモリを割り当てる必要があります。このメモリ割り当てはIMSSL によって後で解放されます。
attribute_flag PreeditAttributeまたはStatusAttribute のどちらに属するか,XIC属性のタイプを指定します。

_____________________________________________________________________ 6.6 サンプル・ファイル

日本語OpenVMSでは,入力サーバに関するサンプル・ファイルがDECW$EXAMPLES ディレクトリに用意されています。このサンプル・ファイルを参照することにより,API の使用方法をより明確に理解することができるでしょう。

___________________________________________________________ 6.6.1 ビルド・プロシージャ

以下に示すようなコマンド・プロシージャが用意されています。これにより, 実行可能な入力サーバをビルドできます。ソースに使われた必要なプログラミング・ インターフェイスおよびデータ構造を定義するヘッダ・ファイルは,DECW$INCLUDE:DIMSDEF.H にあります。IMSSLは共有ライブラリSYS$SHARE:DECW$DIMSLIBSHR.EXE として提供されます。

___________________________________________________________ 6.6.2 ソース・プログラム

     /*
     *****************************************************************************

                   Copyright (c) Digital Equipment Corporation, 1990
                   All Rights Reserved.  Unpublished rights reserved
                   under the copyright laws of the United States.

                   The software contained on this media is proprietary
                   to and embodies the confidential technology of
                   Digital Equipment Corporation.  Possession, use,
                   duplication or dissemination of the software and
                   media is authorized only pursuant to a valid written
                   license from Digital Equipment Corporation.

                   RESTRICTED RIGHTS LEGEND   Use, duplication, or
                   disclosure by the U.S. Government is subject to
                   restrictions as set forth in Subparagraph (c)(1)(ii)
                   of DFARS 252.227-7013, or in FAR 52.227-19, as
                   applicable.

     *****************************************************************************
      *
      * IMS_example.c
      *
      * This is an example of how to write an Input Method Server for X11R5
      * In this example, there are only 26 composed characters, which are
      * formed by 2 consecutive key inputs which are equal. These key inputs
      * should be from a-z, case insensitive. The lookup string
      * will be found from an array, which is some kind of small-scale dictionary.
      *
      * You should load Iso-latin 1 keymap files in order to work properly for
      * this example.
      *
      * You can start this example using four of the languages:
      * Korean, Traditional Chinese, Simplied Chinese and Japanese
      *
      * To start this IMServer, set the xnllanguage resource properly, for example,
      * if you want to input Korean text, you should set the session language to
      * Korean, or simply start as
      *  %IMS_example -xnllanguage ko_KR.korean
      *
      * To connect a client to this IMS, simply start up this IMS as a background
      * job, then start the client with the correct language setting and XMODIFIERS
      * environment. For example,
      *  %setenv XMODIFIERS @im=exam
      *      %dxcardfiler -xnllanguage ko_KR.deckorean
      */

     #include <X11/Intrinsic.h>
     #include <X11/keysymdef.h>
     #include <DIMsDef.h>

     static char my_dictionary[26][2] =  {0xa1, 0xa1,
            0xa1, 0xa2,
            0xa1, 0xa3,
            0xa1, 0xa4,
            0xa1, 0xa5,
            0xa1, 0xa6,
            0xa1, 0xa7,
            0xa1, 0xa8,
            0xa1, 0xa9,
            0xa1, 0xaa,
            0xa1, 0xab,
            0xa1, 0xac,
            0xa1, 0xad,
            0xa1, 0xae,
            0xa1, 0xaf,
            0xa1, 0xb1,
            0xa1, 0xb2,
            0xa1, 0xb3,
            0xa1, 0xb4,
            0xa1, 0xb5,
            0xa1, 0xb6,
            0xa1, 0xb7,
            0xa1, 0xb8,
            0xa1, 0xb9,
            0xa1, 0xba,
            0xa1, 0xbb};

     typedef struct {
        char data[1];
        int  num_char;
     } MyDataRec, *MyData;  /* This is the input context specific data */

     static int CreateICCallback(w, client_data, widget_data)
     Widget w;
     Opaque *client_data;
     Opaque **widget_data;
     {
         MyData my_data = (MyData)XtMalloc(sizeof(MyDataRec));

         if (!my_data)
      return 0; /* fail */

         my_data->num_char = 0;
         *widget_data = (Opaque *)my_data;

         return 1; /* success */
     }

     static int DestroyICCallback(w, client_data, widget_data)
     Widget w;
     Opaque *client_data;
     {
          MyData my_data = (MyData)DIMsUserData(w);

          if (my_data)
      XtFree((char *)my_data);

          return 1; /* success */
     }

     static int GetFilterEventsCallback(w, client_data, mask)
     Widget w;
     Opaque *client_data;
     unsigned long **mask;
     {
        *mask = (unsigned long *) XtMalloc(sizeof(unsigned long));

     /*  Since this IMS supports root-window style only, so just KeyPress
         events are necessary */

        **mask = (unsigned long)(KeyPressMask);
     }

     static int ProcessEventCallback(w, client_data, event, send_back)
     Widget w;
     Opaque *client_data;
     XEvent *event;
     Boolean *send_back;
     {

         MyData my_data = (MyData)DIMsUserData(w);
         Display *dpy  = XtDisplay(w);

         *send_back = True;

         switch (event->type)
         {
            case KeyPress :
          {
       KeyCode keycode = event->xkey.keycode;
       KeySym keysym;
       char second_char;
       XTextProperty text_property;
       char *text_list[1];
       char text[3];

       keysym = XKeycodeToKeysym( dpy, keycode, 0 );
       if ((keysym >= XK_A && keysym <= XK_Z) ||
           (keysym >= XK_a && keysym <=XK_z))
       {
          if (my_data->num_char)
          {
             if (keysym >= XK_a)
         second_char = keysym - XK_a;
             else
             second_char = keysym - XK_A;
             if (second_char == my_data->data[0])
             { /* two consecutive key are equal, send commit string */
         text[0] = my_dictionary[second_char][0];
         text[1] = my_dictionary[second_char][1];
         text[2] = '\0';
         text_list[0] = text;
         XmbTextListToTextProperty(dpy, text_list, 1,
          XCompoundTextStyle, &text_property);
         DIMsCommit(w, (char *)text_property.value,
         strlen((char *)text_property.value)+1);
         XtFree((char *)text_property.value);
         *send_back = False; /* the key is used by IMS,
           no need to return to client */
             }
             my_data->num_char = 0; /* reset to 0*/
          } else {
             my_data->num_char = 1;
             if (keysym >= XK_a)
         my_data->data[0] = keysym - XK_a;
             else
             my_data->data[1] = keysym - XK_A;
             *send_back = False;
          }
       }
           break;
          }
           default :
          break;
         }
     }

     main(argc, argv)
     int argc;
     char **argv;
     {
         Widget toplevel;
         XtAppContext app_context;
         DIMsClassCtx zh_tw_ctx, ja_jp_ctx, zh_cn_ctx, ko_kr_ctx;
         char *server_strings[] = {"exam"};
         XIMStyle support_styles[1] = {XIMPreeditNothing | XIMStatusNothing};
         DIMsLocaleInfoRec locale;
         DIMsStringListRec server_names;
         DIMsSupportStylesRec im_styles;
         Cardinal n;
         Arg al[30];

         XtSetLanguageProc(NULL, NULL, NULL);

         toplevel = XtAppInitialize(&app_context, "example", NULL, 0,
         &argc, argv, NULL, NULL, 0);

     /* set up DIMs Class */
     /* This example targets to work for 4 locales: zh_TW, ja_JP, zh_CN, ko_KR
        Therefore 4 DIMs class contexts are created */
     /* create contexts for locales zh_TW, ja_JP, zh_CN, ko_KR */

         locale.language = "zh_TW";
         locale.num_support_codesets = 0;
         locale.support_codesets = NULL;

         server_names.num_of_strings = 1;
         server_names.string_names = server_strings;

         im_styles.num_support_styles = 1;
         im_styles.support_styles = support_styles;

         n = 0;
         XtSetArg( al[n], DIMsNlocale, &locale);n++;
         XtSetArg( al[n], DIMsNserverName, &server_names);n++;
         XtSetArg( al[n], DIMsNsupportStyles, &im_styles);n++;
         XtSetArg( al[n], DIMsNcreateICCb, CreateICCallback);n++;
         XtSetArg( al[n], DIMsNdestroyICCb, DestroyICCallback);n++;
         XtSetArg( al[n], DIMsNprocessEventCb, ProcessEventCallback);n++;
         XtSetArg( al[n], DIMsNgetFilterEventsCb, GetFilterEventsCallback);n++;
         zh_tw_ctx = DIMsClassCtxCreate(NULL, "zh_tw_exam", al, n);

         locale.language = "ja_JP";
         XtSetArg( al[0], DIMsNlocale, &locale);
         ja_jp_ctx = DIMsClassCtxCreate(zh_tw_ctx, "ja_jp_exam", al, n);

         locale.language = "zh_CN";
         XtSetArg( al[0], DIMsNlocale, &locale);
         zh_cn_ctx = DIMsClassCtxCreate(zh_tw_ctx, "zh_cn_exam", al, n);

         locale.language = "ko_KR";
         XtSetArg( al[0], DIMsNlocale, &locale);
         ko_kr_ctx = DIMsClassCtxCreate(zh_tw_ctx, "ko_kr_exam", al, n);

     /* Initialize IMSSL */
         DIMsSLInitialize(toplevel, zh_tw_ctx);

     /* Realize widget hierrachy */
         XtRealizeWidget(toplevel);

     /* Initialize protocol layer */
         DIMsProtoInit(toplevel, app_context);

         XtAppMainLoop(app_context);
     }


[ 前のページ ] [ 目次 ]