Common Desktop Environment: Help System Author's and Programmer's Guide

Example

The following program segment is part of a HelpRequestCB() function. Presumably, the USING_HELP constant is passed to the function because the user chose Using Help from the application's Help menu or chose the Help button in a quick help dialog.

This example assumes that the application never creates more than one Help On Help dialog and maintains its widget ID in a variable called 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;

To see how the rest of the HelpRequestCB() function might be structured, refer to the example in "To Add a Help Callback".