前へ | 次へ | 目次 | 索引 |
XtResolvePathnameでは,省略時のパス名は,呼び出し内に他のパス情報が存在しないか,または環境変数XFILESEARCHPATH で参照される場合には,一定のプロパティを持つ必要があります。パス名の以前の省略時の OpenVMS 形式は,type-name-suffix 置換で構成されていました。変更されたパス名は,現在では,X11 リリース 5 で指定されるように, 6 つの部分のフォールバックを反映しています。
新しいパス名の動作は,次のように,DECW$VSW_COMPLIANT変数を設定することにより,有効になります。
$ DEFINE DECW$VSW_COMPLIANT 1 |
V1.2--5
従来,ディスプレイを開いていないで,あるいは (XtAppAddTimeoutまたはXtAppAddInputを呼び出して) プログラムが待機するタイマまたはイベント・フラグを指定していないでプログラムが (たとえば,XtAppMainLoopを呼び出して) イベント・ループに入ると, Xlibは次のエラー・メッセージを表示してプログラムを終了していました。
X Toolkit Error: Error in XMultiplexInput |
DECwindows Motif V1.2-5 for OpenVMSからは,待機するものがなにもない場合でも, Xlibはエラー状態で終了する代わりに,入力待ちのまま停止します。
このあとXlibがイベントを処理できるようにするには,アプリケーション側でXtAppAddInputを呼び出してイベント・フラグを指定するなど,制御を回復するなんらかの手段を提供する必要があります。
4.10.1.5 OpenVMS システムのロケールのサポート
DECwindows Motif V1.2-4 for OpenVMS で提供されるロケール・サポートは, DEC C ランタイム・ライブラリでのロケール・サポートとの互換性があります。このロケール環境で,これらの機能を使用して国際化アプリケーションを作成する場合は,次の手順に従ってください。
/define=(X_LOCALE,X_WCHAR,_WCHAR_T_,XLIB_XPG4_FUNCS) |
X Window System Version 11 Release 5 (X11 R5)では,国際化されたX アプリケーション作成をサポートするためにいくつかのサービスを定義しています。 X の国際化は,ロケールのコンセプトに基づいています。ロケールによってプログラム実行時の動作が,国や地域に対応したものになります。特定のロケールはXlib の次の機能に影響を与えます。
X ウィンドウ・システムでは,Xでのプログラミングを標準化するために,一般的方法論とアプリケーション・プログラム・インタフェース(API)を定義していますが,これらの国際化機能を実装するための標準は確立していません。現行では,X11 R5の配布によって, Xlib 国際化サポートの 2 つのサンプル実装 (XsiとXimp) が提供されています。さらに弊社では,Xi18nという実装を提供しており,これらの中から好みの実装を選択・使用することができます (ただし,Xsi は DECwindows Motif では提供していません)。これらの実装は,同じ API と同じ機能を提供しますが,その実装方法が異なっています。
4.10.1.6.1 VendorPluggable 層
弊社は,vendorpluggable層と呼ばれる汎用的なメカニズムを用意しています。これによって特定の国際化実装を選択することができます。異なった実装をスタンドアロン共有可能ライブラリとして構築することができ, DECW$XVENDORLAYER論理名で選択することができます。
この論理名が定義されていない場合,このメカニズムは次の順序で国際化ライブラリを検索します。
DECW$XI18NLIBSHR (Xi18n)
DECW$XSILIBSHR (Xsi)
DECW$XIMPLIBSHR (Ximp)
共有可能ライブラリが見つからない場合,すでに Xlib にリンクされている Xi18n が省略時の設定となります。
次の関数は,Xlib と国際化共有可能ライブラリとの間のインタフェースとして動作します。
XDefaultString
XwcFreeStringList
XwcTextListToTextProperty
XmbTextListToTextProperty
XwcTextPropertyToTextList
XmbTextPropertyToTextList
_XrmInitParseInfo
_XlcDefaultLoader
Xsi あるいは Ximp 共有可能ライブラリを作成する場合, Xlib で定義されているインタフェース名を知る必要があります。コンパイル中に次のコンパイル・フラグを追加することにより,関数の名前を変更することを推奨します。
/define=(- "XDefaultString"="_XDefaultString",- "XwcFreeStringList"="_XwcFreeStringList",- "XwcTextListToTextProperty"="_XwcTextListToTextProperty",- "XmbTextListToTextProperty"="_XmbTextListToTextProperty",- "XwcTextPropertyToTextList"="_XwcTextPropertyToTextList",- "XmbTextPropertyToTextList"="_XmbTextPropertyToTextList",- "_XrmInitParseInfo"="__XrmInitParseInfo",- "_XlcDefaultLoader"="__XlcDefaultLoader") |
弊社固有の実装 (Xi18n) は機能拡張され,安定した国際化環境を提供しています。 X 配布によるXsiやXimpの環境に比べて次の利点があります。
4.10.1.7 XSelectAsyncEventルーチンとXSelectAsyncInputルーチン
XSelectAsyncEventルーチンとXSelectAsyncInputルーチンは, AST 引き渡し情報記憶用メモリを割り当てます。この記憶は次のいくつかの方法で解除されます。
サブウィンドウ用のAST 引き渡し情報は, XDestroyWindowによっては解除されません。
所定のウィンドウ内のすべてのイベント・タイプのAST 通知を解除し, AST 引き渡し情報も解除したいときには,クライアント・アプリケーションは,
event_mask 引数を -1に(全ビット・セット),
ast_routine 引数を 0にして XSelectAsyncEventルーチンあるいはXSelectAsyncInputルーチンを呼び出してください。
4.10.1.8 コマンド・プロシージャが.PENファイルを作成
PascalプログラムがXlib用とMotif用の環境ファイルを利用できるように, SYS$LIBRARY:DECW$PEN_BUILD.COMコマンド・プロシージャを実行する必要があります。このコマンド・プロシージャは, DECW $XLIBDEF.PENファイルとDECW$MOTIF.PENファイルを生成します。 Pascal プログラムへのコンパイルには,提供されている.PASファイルよりも.PENファイルの方が高速となります。
4.10.2 修正事項
以前のバージョンでエラーになり,回避策を必要としたXlibに固有の問題点の解決について,次に説明します。
4.10.2.1 UNIX ファイル名のエミュレーション (Alpha のみ)
V1.2--6
以前のバージョンでは,XtResolvePathname およびMrmOpenHierarchy などの関数内で,パス構文 "../"を埋め込んだUNIX 形式のファイル名は,正しく処理されませんでした。この構文は非常に珍しいものですが,ファイル名およびパス名の両方に相対パス指定が含まれる場合には,使用されることがあります。
この問題は解決され,この埋め込み構文のあるUNIX形式のファイル名は,期待どおりに解析されます。
4.10.2.2 XmTextField ウィジェットが正しくフォーカスを切り替える
V1.2--6
losingFocus コールバックが,XmTextField ルーチンで XtSetValues()を実行しても,もうクラッシュすることはありません。
4.10.2.3 XrmoptionStickyArg が正しい結果を生成する
V1.2--6
XrmoptionStickyArgルーチンに関する問題は解決されました。このルーチンは,コマンド・ラインから参照された場合に,もう間違った結果を返すことはありません。
4.10.2.4 PAllHints マクロの修正
XUTILS.H 内の PAllHintsマクロの値が修正されました。
4.10.3 問題点と制限事項
Xlib に関する問題点と制限事項について,次に説明します。
4.10.3.1 XtOpenDisplay ルーチンと大文字/小文字の区別
XtOpenDisplayのアプリケーション名がargv[0]からきている場合,コマンド・ラインのアプリケーション名を表していることがあります。
大文字/小文字の区別を有効にしてODS-5 システムを参照しているか,またはユーザ定義のargvリストを解析している場合などのような環境では,大文字/小文字の区別が保持されなければならないことに注意してください。
4.10.3.2 パラメータ/プロトコルのデータ・サイズの不適合
いくつかのXlib ルーチンはロングワードのパラメータを受け付けますが, X プロトコル・メッセージにはその全体は送出されません。それぞれの場合で,Xlibルーチンは,パラメータ値の最下位16 ビットのみを送出します。これは,X プロトコル・メッセージ内のフィールド・サイズにより受ける制約です。
表 4-8 は,ルーチン名および16ビット値としてのみ送出されるロングワードの引数リストです。
ルーチン名 | 引数 |
---|---|
XAllocColorCells/ALLOC_COLOR_CELLS | nplanes,npixels |
XDrawArc/DRAW_ARC | x,y,width,height, angle1,angle2 |
XDrawLine/DRAW_LINE | x1,x2,x3,x4 |
XDrawPoint/DRAW_POINT | x,y |
XDrawRectangle/DRAW_RECTANGLE | x,y,width,height |
XDrawString/DRAW_STRING | x,y |
XDrawString16/DRAW_STRING16 | x,y |
XDrawText/DRAW_TEXT | x,y |
XDrawText16/DRAW_TEXT16 | x,y |
XFillArc/FILL_ARC | x,y,width, height,angle1,angle2 |
XFillRectangle/FILL_RECTANGLE | x,y,width,height |
この章は,DECwindows Motif 関連ドキュメントの改訂情報を含んでいます。
5.1 『New Desktop 使用概説書』
この節では,『New Desktop 使用概説書』の記載の誤りを訂正します。
5.1.1 ファイル指定の間違い
V1.2--5
『New Desktop 使用概説書』のコマンド・プロシージャのファイル指定の記述に誤りがあります。同マニュアルの第3.4.9項の5段落で,ファイル仕様は次のように記載されています。
「DECwindows Notesなどの, DECwindowsのオプション・アプリケーションは,情報を提供しないため自動再起動されない場合があります。その場合, disk$:[user.DT]SESSIONETC.COM のコマンド・プロシージャを使用して,自動起動されないアプリケーションを起動することができます。このプロシージャは,従来のDECwindows環境ではDECW$LOGIN.COMプロシージャに相当します。」
正確な記述は次のとおりです。
disk$:[user.DT.SESSIONS]SESSIONETC.COM
5.2 『DECwindows Motif for OpenVMS Applications Guide』
この節では,『DECwindows Motif for OpenVMS Applications Guide』の記載の誤りを訂正します。
5.2.1 [印刷終了] オプションについての拡張情報
漢字端末エミュレータに関する章の「印刷情報」の節では, [印刷] メニューについての情報を提供しています。「印刷終了」の節に掲載されている情報をさらに理解するために,次のことに注意してください。
[印刷] メニューの [印刷終了] オプションを選択した場合,プリント・ジョブをクローズし,自動印刷モードを通常印刷モードに戻します。
5.3 『Using DECwindows Motif for OpenVMS』
この節では,『Using DECwindows Motif for OpenVMS』ドキュメントの訂正および補足事項について説明します。
5.3.1 ドラッグ・ドロップ機能の使用
ドラッグ・ドロップ機能により,画面上のオブジェクトの移動と複写を行うことができます。たとえば,テキスト入力領域のテキストを移動し,他の場所へ貼り付けることができます。
次の手順でテキストを新しい場所にドラッグ・ドロップします。
ドラッグ・ドロップは,主にプログラマがアプリケーションにこの機能を組み込むために提供されています。
ノートパッドを除くすべての DECwindows Motif for OpenVMS バージョン 1.2 のアプリケーションは,ドラッグ・ドロップ機能をサポートしています。 DECwindows Mail はメイン・メッセージ・エリアを除くすべてのウィンドウでドラッグ・ドロップ機能をサポートします。メイン・メッセージ・エリアでは DECwindows Mail は独自のドラッグ・ドロップ機能を持っており, SVN インタフェースにより MB2 を使用してメッセージを移動することができます。
5.3.2 「テア・オフ」メニューの使用
DECwindows メールは,「テア・オフ」メニューをサポートします。
DECwindows Motifアプリケーションでは,プルダウン・メニューとポップアップ・メニューを元の場所から切り離すことができます。「テア・オフ」メニューにより,頻繁に使用するメニューを何度もプルダウンしたりポップアップしたりすることなく表示しておくことができます。
次の手順でメニューをテア・オフします。
「テア・オフ」メニューは次の手順でクローズします。
次のアプリケーションは「テア・オフ」メニューをサポートしていません。
5.3.3 アプリケーション・メニュー項目へのターゲット画面オプションの追加
V1.2
『Using DECwindows Motif for OpenVMS』の「Adding Target Screen Options to Application Menu Items」に記述されている例は間違っています。最初に出てくる次の行を削除してください。
$ select_qualifiers:
5.3.4 起動環境の変更
V1.2
「Changing Your Logo」に記述されている例は間違っています。問題を解決するには,手順 1 に出てくる次のコード例を変更してください。
$ COPY SYS$COMMON:[SYSMGR]DECW$PRIVATE_APPS_SETUP.TEMPLATE - _$ SYS$SPECIFIC:[SYSMANAGER]DECW$PRIVATE_APPS_SETUP.COM/LOG |
正しいコード例は,次のとおりです。
$ COPY SYS$COMMON:[SYSMGR]DECW$PRIVATE_APPS_SETUP.TEMPLATE - _$ SYS$SPECIFIC:[SYSMGR]DECW$PRIVATE_APPS_SETUP.COM/LOG |
V1.1
SYLOGIN.COM または LOGIN.COM コマンド・プロシージャが大き過ぎる場合,アプリケーションの起動が遅くなります。 SYLOGIN.COMまたはLOGIN.COMで実行される処理の多くは DECwindowsアプリケーションの起動にとって意味がありません。このため,SYLOGIN.COMおよびLOGIN.COMの両ファイルには DECwindowsアプリケーションの起動性能を高めるために調整する必要があります。これを行うにはDECwindowsアプリケーション起動時に, SYLOGIN.COMおよびLOGIN.COMコマンド・プロシージャが最低限のコマンドのみを実行するようにします。
実行すべきコマンドとしては, DECW$USER_DEFAULTS がある場合はその再定義,あるいはDECwindowsアプリケーションのコンテキスト内でユーザが参照しているその他の論理名の再定義などがあります。 SYLOGIN.COMとLOGIN.COMのDECwindowsに必要なコマンドの直後に,次の命令を挿入することが可能です。
$ mode = f$mode() $ tt_devname = f$trnlnm("TT") $ session_mgr_login = (mode .eqs. "INTERACTIVE") .and. - (f$locate("WSA",tt_devname) .ne. f$len(tt_devname)) $ session_detached_process = (mode .eqs. "INTERACTIVE") .and. - (f$locate("MBA",tt_devname) .ne. f$len(tt_devname)) $ if session_mgr_login .or. session_detached_process then exit |
上記の各行がSYLOGIN.COMおよびLOGIN.COMファイルに追加されなくても,アプリケーションは引き続き稼動します。
前へ | 次へ | 目次 | 索引 |