共通デスクトップ環境 プログラマーズ・ガイド (ヘルプ・システム編)

アプリケーションの「ヘルプの使い方」へのアクセス

アプリケーションは「ヘルプの使い方」をサポートするために次の作業を実行します。

helpOnHelpVolume リソースを設定するには

    アプリケーションのデフォルトのリソース・ファイルに次のような 1 行を追加します。

       
    App-class*helpOnHelpVolume:  volume
    

    App-class はアプリケーションのクラス名、volume はアクセスしたい「ヘルプの使い方」ボリューム名です。

    またアプリケーション内で、作成した各ヘルプ・ダイアログ helpOnHelpVolume リソースを設定します。

[ヘルプの使い方] コマンドを指定するには

  1. [ヘルプ] メニューに [ヘルプの使い方] というラベルのボタンを追加します。また、必要な起動コールバックを起動して、HelpRequestCB() 関数を呼び出します。

  2. 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 の処理方法を確認するには、次の「ヘルプの使い方」を表示するには」にある例を参照してください。

「ヘルプの使い方」を表示するには

  1. 簡易ヘルプ・ダイアログを作成します (またはキャッシュから取り出します)。

  2. ダイアログに「ヘルプの使い方」ボリュームのホーム・トピックを表示します。

「ヘルプの使い方」は一般ヘルプ・ウィンドウに表示できます。しかし、簡易ヘルプ・ダイアログのユーザ・インタフェースはもっと単純なので、簡易ヘルプ・ダイアログを使用してください。このダイアログは、通常「ヘルプの使い方」を必要とする新しいユーザでも簡単に使用できます。

次のプログラム・セグメントは、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() 関数の残りが構成される方法を確認するには、「ヘルプ・コールバックを追加するには」にある例を参照してください。

関連項目