ヘルプが要求されると、アプリケーションが表示するヘルプ・トピックを決定します。次にヘルプ・ダイアログを (必要であれば) 作成し、管理して、ヘルプ・トピックを表示するのに適切なリソースを設定します。
ほとんどの要求については、アプリケーションのヘルプ・ボリュームの一部であるヘルプ・トピックが表示されます。しかしヘルプ・システムのヘルプ・ダイアログは、マニュアル・ページ、テキスト・ファイル、単一テキスト文字列を表示することもできます。
ヘルプ・システムのヘルプ・ダイアログは Xt イントリンシクスと OSF/Motif プログラミングに明示的に基づいているので、他のウィジェットと同じように、リソースを設定することによりヘルプ・ダイアログ内で値を変更できます。
DtNhelpType リソースは、表示するべき情報の種類を決定します。次のいずれかの値が設定されます。
DtHELP_TYPE_TOPIC
ヘルプ・ボリュームの一部である通常のヘルプ・トピックを表示します。ボリュームは DtNhelpVolume リソースを設定して指定します。トピックは DtNlocationId リソースを設定して指定します。
DtHELP_TYPE_STRING
アプリケーションが提供する文字列を表示します。自動的な行の折り返しは使用できないので、改行は文字列で指定してください。文字列は DtNstringData リソースを設定して指定します。
DtHELP_TYPE_DYNAMIC_STRING
アプリケーションが提供する文字列を、行の折り返しでテキストをフォーマットした状態で表示します。改行はパラグラフの切れ目を示します。文字列は DtNstringData リソースを設定して指定します。
DtHELP_TYPE_FILE
テキスト・ファイルを表示します。表示するファイル名は、DtNhelpFile リソースを設定して指定します。
DtHELP_TYPE_MAN_PAGE
ヘルプ・ダイアログのマニュアル参照ページ (マニュアル・ページ) を表示します。表示するマニュアル・ページは、DtNmanPage リソースを設定して指定します。
上記の値は Help.h ファイルで定義されています。
ヘルプ・ダイアログを作成します。
次のようなヘルプ・ダイアログのリソースを設定します。
DtHELP_TYPE_TOPIC を設定します。
アプリケーションのボリューム名を設定します。
表示するトピックの ID を設定します。
サイズやタイトルなど、その他の値も設定できます。
XtManageChild() を使用してダイアログを管理します。
次のプログラム・セグメントは、ID である getting-started が付いたトピックを、ボリューム MyVolume に表示します。
ac = 0;
XtSetArg (al[ac], DtNhelpType, DtHELP_TYPE_TOPIC); ac++; XtSetArg (al[ac], DtNhelpVolume, "MyVolume"); ac++; XtSetArg (al[ac], DtNlocationId, "getting-started"); ac++; XtSetArg (al[ac], DtNcolumns, 40); ac++; XtSetArg (al[ac], DtNrows, 12); ac++; XtSetValues (helpDialog, al, ac); XtManageChild (helpDialog);
ヘルプ・ボリューム MyVolume が登録されていない場合、DtNhelpVolume の値を指定するためには、MyVolume.sdl ファイルへの絶対パスが必要です。
簡易ヘルプ・ダイアログを作成します。
一般ヘルプ・ダイアログも使用できますが、このダイアログの機能は文字列データにほとんど適用されないので、使用しないようにしてください。
次のようなヘルプ・ダイアログのリソースを設定します。
DtHELP_TYPE_DYNAMIC_STRING (行の折り返しを使用する場合) または DtHELP_TYPE_STRING (改行を有効にしたい場合) を設定します。
表示する文字列を設定します。文字列のコピーは内部的に保持されるので、保存する必要はありません。
サイズやタイトルなど、その他の値も設定できます。
XtManageChild() を使用してダイアログを管理します。
次のプログラム・セグメントは、変数 descriptionString に格納された文字列を表示します。
ac = 0; XtSetArg (al[ac], DtNhelpType, DtHELP_TYPE_DYNAMIC_STRING); ac++; XtSetArg (al[ac], DtNstringData, (char *)descriptionString); ac++; XtSetValues (quickHelpDialog, al, ac); XtManageChild (quickHelpDialog);
ヘルプ・ダイアログはデータのコピーを自身で作成するので、文字列が不要になった場合はメモリを解放できます。
XtFree (descriptionString);
簡易ヘルプ・ダイアログを作成するか、ダイアログ・キャッシュの 1 つを取り出します。
一般ヘルプ・ダイアログも使用できますが、このダイアログの機能のほとんどが標準ヘルプ・トピックについてのみ有効なので、使用しないようにしてください。
次のようなヘルプ・ダイアログのリソースを設定します。
表示するファイル名を設定します。アプリケーションの現在のディレクトリにファイルがない場合は、ファイルへのパスを指定してください。
サイズやタイトルなど、その他の値も設定できます。特に幅はテキスト・ファイルの標準である 80 に設定します。
XtManageChild() を使用してダイアログを管理します。
次のプログラム・セグメントは、ファイル /tmp/printer.list を表示します。ダイアログのサイズもテキスト・ファイルにより適応するように設定します。
ac = 0; XtSetArg (al[ac], DtNhelpType, DtHELP_TYPE_FILE); ac++; XtSetArg (al[ac], DtNhelpFile, "/tmp/printer.list"); ac++; XtSetArg (al[ac], DtNcolumns, 80); ac++; XtSetArg (al[ac], DtNrows, 20); ac++; XtSetValues (quickHelpDialog, al, ac); XtManageChild (quickHelpDialog);
簡易ヘルプ・ダイアログを作成します。
一般ヘルプ・ダイアログも使用できますが、このダイアログの機能のほとんどが標準ヘルプ・トピックについてのみ有効なので、使用しないようにしてください。
次のようなヘルプ・ダイアログのリソースを設定します。
DtHELP_TYPE_MAN_PAGE を設定します。
マニュアル・ページ名を設定します。このリソースの値は、システムの man コマンドへ直接渡されます。したがって特定のセクションを指定するときは、通常 man コマンドを入力するときのように、セクション番号の前にマニュアル・ページ名を付けてください。
サイズやタイトルなど、その他の値も設定できます。
XtManageChild() を使用してダイアログを管理します。
次のプログラム・セグメントは、grep コマンドのマニュアル・ページを表示します。ダイアログのサイズもマニュアル・ページに適応するように設定します。
ac = 0; XtSetArg (al[ac], DtNhelpType, DtHELP_TYPE_MAN_PAGE); ac++; XtSetArg (al[ac], DtNmanPage, "grep"); ac++; XtSetArg (al[ac], DtNcolumns, 80); ac++; XtSetArg (al[ac], DtNrows, 20); ac++; XtSetValues (quickHelpDialog, al, ac); XtManageChild (quickHelpDialog);