アプリケーションは、表示されるヘルプ・ボリューム内で使用されるハイパーリンクの種類だけは少なくともサポートする必要があります。一般的には、すべてのリンクの種類をサポートするようにしてください。
ハイパーリンクが選択されたときにアプリケーションに通知する場合、ハイパーリンク・コールバックをヘルプ・ダイアログに追加します。適切にハイパーリンクを処理するコールバック関数を指定しなければなりません。
次のようにしてハイパーリンク・コールバックを各ヘルプ・ダイアログに追加します。
XtAddCallback (helpDialog, DtNhyperlLinkCallback, HyperlinkCB, (XtPointer)NULL);
helpDialog はヘルプ・ダイアログのウィジェット ID で、HyperlinkCB はハイパーリンクを処理するコールバック関数名です。
ダイアログ内で発生する可能性があるハイパーリンク・イベントを処理するための HyperlinkCB 関数を指定します。
ハイパーリンク・コールバック内で、次のコールバック構造体 (<Dt/Help.h> で宣言される) にアクセスしなければなりません。
typedef struct { int reason; XEvent *event; char *locationId; char *helpVolume; char *specification; int hyperType; int windowHint; } DtHelpDialogCallbackStruct;
hyperType 要素は、実行されたリンクの種類を示します。その指定可能な値は、DtHELP_LINK_TOPIC、DtHELP_LINK_MAN_PAGE、DtHELP_LINK_APP_DEFINE、 DtHELP_LINK_TEXT_FILE です。別の種類に対してどの構造体要素が有効かについては、DtHelpDialog(3) のマニュアル・ページを参照してください。
windowHint 要素は、ウィンドウの種類を示します。その指定可能な値は、DtHELP_CURRENT_WINDOW、DtHELP_POPUP_WINDOW、DtHELP_NEW_WNIDOW です。
次の関数 HyperlinkCB() は、ハイパーリンク・コールバックを処理するために必要な一般構造体を示しています。
XtCallbackProc HyperlinkCB (widget, clientData, callData) Widget widget; XtPointer clientData; XtPointer callData; { DtHelpDialogCallbackStruct *hyperData = (DtHelpDialogCallbackStruct *) callData; switch ((int)hyperData-> hyperType) { case DtHELP_LINK_TOPIC: /* Handles "jump new view"hyperlinks. */ break; case DtHELP_LINK_MAN_PAGE: /* Handles "man page" hyperlinks. */ break; case DtHELP_LINK_APP_DEFINE: /* Handles ``application-defined" hyperlinks. */ break; case DtHELP_LINK_TEXT_FILE: /* Handles ``text file" hyperlinks. */ break; default: break; }