アプリケーションは「ヘルプの使い方」をサポートするために次の作業を実行します。
helpOnHelpVolume リソースを設定し、アクセスしたいヘルプ・ボリュームを識別する。
[ヘルプの使い方] コマンドをアプリケーションの [ヘルプ] メニューに追加する。
アプリケーションのデフォルトのリソース・ファイルに次のような 1 行を追加します。
App-class*helpOnHelpVolume: volume
App-class はアプリケーションのクラス名、volume はアクセスしたい「ヘルプの使い方」ボリューム名です。
またアプリケーション内で、作成した各ヘルプ・ダイアログ helpOnHelpVolume リソースを設定します。
dthelpview のデフォルトのリソース・ファイル (DtHelpview) にある次の行は、「ヘルプの使い方」ボリュームを指定します。
DtHelpview*helpOnHelpVolume: Help4Help
ヘルプ・ダイアログの作成中に「ヘルプの使い方」ボリュームを作成するには、次のように作成関数に渡された引き数のリストに追加します。
ac = 0; XtSetArg (al[ac], XmNtitle, "My Application - Help"); ac++; XtSetArg (al[ac], DtNhelpOnHelpVolume, "Help4Help"); ac++; helpDialog = DtCreateHelpDialog (parent, "helpDialog", al, ac);
[ヘルプ] メニューに [ヘルプの使い方] というラベルのボタンを追加します。また、必要な起動コールバックを起動して、HelpRequestCB() 関数を呼び出します。
HelpRequestCB() 関数にサポートを追加し、「ヘルプの使い方」を表示します。特に次の作業を実行します。
簡易ヘルプ・ダイアログを作成します。
ダイアログのタイトルを「ヘルプの使い方」に設定します。
「ヘルプの使い方」ボリュームのホーム・トピックを表示します。
簡易ヘルプ・ダイアログを管理します。
次の行は、HelpRequestCB() 関数を呼び出す [ヘルプの使い方] というラベルのメニュー・ボタンを作成します。
/* Create the ` Using Help ...' button. */
labelStr = XmStringCreateLtoR ("Using Help ...", XmSTRING_DEFAULT_CHARSET); ac = 0; XtSetArg (al[ac], XmNlabelString, labelStr); ac++; button = XmCreatePushButtonGadget (parent, "usingHelpButton", al, ac); XtManageChild (button); XmStringFree (labelStr); /* Add a callback to the button. */ XtAddCallback (button,XmNactivateCallback,HelpRequestCB, USING_HELP);
USING_HELP は、ユーザがメニュー・ボタンを選択したときに HelpRequestCB() 関数に渡されるクライアント・データです。通常、アプリケーションのどこか (Help.h ファイルなど) で固有の整数として定義されています。
#define USING_HELP 47
HelpRequestCB() 関数の USING_HELP の処理方法を確認するには、次の「ヘルプの使い方」を表示するには」にある例を参照してください。
「ヘルプの使い方」は一般ヘルプ・ウィンドウに表示できます。しかし、簡易ヘルプ・ダイアログのユーザ・インタフェースはもっと単純なので、簡易ヘルプ・ダイアログを使用してください。このダイアログは、通常「ヘルプの使い方」を必要とする新しいユーザでも簡単に使用できます。
次のプログラム・セグメントは、HelpRequestCB() 関数の一部です。通常、ユーザは、アプリケーションの [ヘルプ] メニューから [ヘルプの使い方] を選択するか簡易ヘルプ・ダイアログの [ヘルプ] ボタンを選択するため、USING_HELP 定数はその関数に渡されます。
次の例は、アプリケーションが [ヘルプの使い方] ダイアログを 1 つしか作成せず、そのウィジェット ID を onHelpDialog と呼ばれる変数に保持するものと仮定しています。
case USING_HELP: if (onHelpDialog == (Widget)NULL) { /* Get a quick help dialog for use as the ` help on help' dialog. */ onHelpDialog = FetchHelpDialog (True); if (onHelpDialog == (Widget)NULL) /* We didn't get a dialog! Add your error handling code here. */ } /* Set the proper volume and ID to display the home topic of the help on help volume. Also, set the dialog's title. */ ac = 0; XtSetArg (al[ac], XmNtitle, "Help On Help"); ac++; XtSetArg (al[ac], XmNhelpType, DT_HELP_TYPE_TOPIC); ac++; XtSetArg (al[ac], XmNhelpVolume, "Help4Help"); ac++; XtSetArg (al[ac], XmNlocationId, "_hometopic"); ac++; XtSetValues (onHelpDialog, al, ac); /* If the ` help on help' dialog is already managed, it might be in another workspace, so unmanage it. */ if (XtIsManaged (onHelpDialog)) XtUnmanageChild (onHelpDialog); /* Manage the ` help on help' dialog. */ XtManageChild (onHelpDialog); break;
HelpRequestCB() 関数の残りが構成される方法を確認するには、「ヘルプ・コールバックを追加するには」にある例を参照してください。