home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / viscobv6.zip / vac22os2 / ibmcobol / samples / toolkit / pm / controls / sty_help.c < prev    next >
C/C++ Source or Header  |  1996-11-19  |  12KB  |  362 lines

  1. /*************************************************************************
  2. *
  3. *  File Name   : STY_HELP.C
  4. *
  5. *  Description : This module contains all the routines for
  6. *                interfacing with the IPF help manager.
  7. *
  8. *  Concepts    : Help initialization and termination, handling of
  9. *                help menu items.
  10. *
  11. *  API's       : WinCreateHelpInstance
  12. *                WinAssociateHelpInstance
  13. *                WinLoadString
  14. *                WinSendMsg
  15. *                WinDlgBox
  16. *                WinDestroyHelpInstance
  17. *
  18. *  Copyright (C) 1992 IBM Corporation
  19. *
  20. *      DISCLAIMER OF WARRANTIES.  The following [enclosed] code is
  21. *      sample code created by IBM Corporation. This sample code is not
  22. *      part of any standard or IBM product and is provided to you solely
  23. *      for  the purpose of assisting you in the development of your
  24. *      applications.  The code is provided "AS IS", without
  25. *      warranty of any kind.  IBM shall not be liable for any damages
  26. *      arising out of your use of the sample code, even if they have been
  27. *      advised of the possibility of such damages.                                                    *
  28. *
  29. ************************************************************************/
  30.  
  31. /*  Include files, macros, defined constants, and externs       */
  32.  
  33. #define  INCL_WINHELP
  34.  
  35. #include <os2.h>
  36. #include <string.h>
  37. #include "sty_main.h"
  38. #include "sty_xtrn.h"
  39. #include "sty_dlg.h"
  40. #include "sty_help.h"
  41.  
  42. #define HELPLIBRARYNAMELEN  20
  43.  
  44. /*  Global variables                                            */
  45. static HWND hwndHelpInstance;
  46. static CHAR szLibName[HELPLIBRARYNAMELEN];
  47. static CHAR szWindowTitle[HELPLIBRARYNAMELEN];
  48.  
  49.  
  50. /*  Entry point declarations                                    */
  51. MRESULT EXPENTRY ProdInfoDlgProc(HWND hwnd, USHORT msg,
  52.                                  MPARAM mp1, MPARAM mp2);
  53.  
  54. /***************************************************************
  55.  *  Name: InitHelp
  56.  *
  57.  *  Description : Initializes the IPF help facility
  58.  *
  59.  *  Concepts : Initializes the HELPINIT structure and creates the
  60.  *             help instance.  If successful, the help instance
  61.  *             is associated with the main window
  62.  *
  63.  *  API's : WinCreateHelpInstance
  64.  *          WinAssociateHelpInstance
  65.  *          WinLoadString
  66.  *
  67.  *  Parameters : None
  68.  *
  69.  *  Returns:  None
  70.  *
  71.  ****************************************************************/
  72. VOID InitHelp(VOID)
  73. {
  74.   HELPINIT helpInit;
  75.  
  76.   /* if we return because of an error, Help will be disabled                */
  77.   fHelpEnabled = FALSE;
  78.  
  79.   /* inititalize help init structure                                        */
  80.   helpInit.cb = sizeof(HELPINIT);
  81.   helpInit.ulReturnCode = 0L;
  82.  
  83.   helpInit.pszTutorialName = (PSZ)NULL;   /* if tutorial added,             */
  84.                                           /* add name here                  */
  85.   helpInit.phtHelpTable = (PHELPTABLE)MAKELONG(STYLE_HELP_TABLE,
  86.                            0xFFFF);
  87.   helpInit.hmodHelpTableModule = (HMODULE)0;
  88.   helpInit.hmodAccelActionBarModule = (HMODULE)0;
  89.   helpInit.idAccelTable = 0;
  90.   helpInit.idActionBar = 0;
  91.  
  92.   if (!WinLoadString(hab, (HMODULE)0, IDS_HELPWINDOWTITLE,
  93.                     HELPLIBRARYNAMELEN, (PSZ)szWindowTitle))
  94.   {
  95.      MessageBox(hwndMain, IDMSG_CANNOTLOADSTRING, MB_OK | MB_ERROR, FALSE);
  96.      return;
  97.   }
  98.   helpInit.pszHelpWindowTitle = (PSZ)szWindowTitle;
  99.   helpInit.fShowPanelId = CMIC_HIDE_PANEL_ID;
  100.  
  101.   if (!WinLoadString(hab, (HMODULE)0, IDS_HELPLIBRARYNAME,
  102.        HELPLIBRARYNAMELEN, (PSZ)szLibName))
  103.   {
  104.      MessageBox(hwndMain, IDMSG_CANNOTLOADSTRING, MB_OK | MB_ERROR, FALSE);
  105.      return;
  106.   }
  107.  
  108.   helpInit.pszHelpLibraryName = (PSZ)szLibName;
  109.  
  110.   /* creating help instance                                                 */
  111.   hwndHelpInstance = WinCreateHelpInstance(hab, &helpInit);
  112.  
  113.   if (!hwndHelpInstance || helpInit.ulReturnCode)
  114.   {
  115.      MessageBox(hwndMainFrame, IDMSG_HELPLOADERROR, MB_OK | MB_ERROR, TRUE);
  116.      return;
  117.   }
  118.  
  119.   /* associate help instance with main frame                                */
  120.   if (!WinAssociateHelpInstance(hwndHelpInstance, hwndMainFrame))
  121.   {
  122.      MessageBox(hwndMainFrame, IDMSG_HELPLOADERROR, MB_OK | MB_ERROR, TRUE);
  123.      return;
  124.   }
  125.  
  126.   /* help manager is successfully initialized so set flag to TRUE           */
  127.   fHelpEnabled = TRUE;
  128.  
  129. }   /*                                          End of InitHelp()           */
  130.  
  131. /*********************************************************************
  132.  *  Name: HelpUsingHelp
  133.  *
  134.  *  Description : Processes the WM_COMMAND message posted
  135.  *                by the Using Help item of the Help menu
  136.  *
  137.  *  Concepts : Called from MainCommand when the Using Help menu item
  138.  *             is selected.  Sends an HM_DISPLAY_HELP message to the
  139.  *             help instance so that the default Using Help is
  140.  *             displayed.
  141.  *
  142.  *  API's : WinSendMsg
  143.  *
  144.  *  Parameters :  mp2 - Message parameter 2
  145.  *
  146.  *  Returns: None
  147.  *
  148.  ****************************************************************/
  149. VOID  HelpUsingHelp(MPARAM mp2)
  150. {
  151. /*    this just displays the system help for help panel                       */
  152.   if (fHelpEnabled)
  153.   {
  154.     if ((BOOL)WinSendMsg(hwndHelpInstance, HM_DISPLAY_HELP, NULL, NULL))
  155.     {
  156.        MessageBox(hwndMain, IDMSG_HELPDISPLAYERROR, MB_OK | MB_ERROR, FALSE);
  157.     }
  158.   }
  159.  /*
  160.   * This routine currently doesn't use the mp2 parameter but
  161.   * it is referenced here to prevent an 'Unreferenced Parameter'
  162.   * warning at compile time.
  163.   */
  164.   mp2;
  165. }   /* End of HelpUsingHelp()                                                */
  166.  
  167. /*********************************************************************
  168.  *  Name: HelpUsingHelp
  169.  *
  170.  *  Description : Processes the WM_COMMAND message posted
  171.  *                by the General Help item of the Help menu
  172.  *
  173.  *  Concepts : Called from MainCommand when the General Help menu item
  174.  *             is selected.  Sends an HM_EXT_HELP message to the
  175.  *             help instance so that the default Extended Help is
  176.  *             displayed.
  177.  *
  178.  *  API's : WinSendMsg
  179.  *
  180.  *  Parameters :  mp2 - Message parameter 2
  181.  *
  182.  *  Returns: None
  183.  *
  184.  ****************************************************************/
  185. VOID  HelpGeneral(MPARAM mp2)
  186. {
  187. /*   this just displays the system General help panel                       */
  188.    if (fHelpEnabled)
  189.    {
  190.      if ((BOOL)WinSendMsg(hwndHelpInstance, HM_EXT_HELP, NULL, NULL))
  191.      {
  192.         MessageBox(hwndMain, IDMSG_HELPDISPLAYERROR, MB_OK | MB_ERROR, FALSE);
  193.      }
  194.    }
  195.    /*
  196.     * This routine currently doesn't use the mp2 parameter but
  197.     * it is referenced here to prevent an 'Unreferenced Parameter'
  198.     * warning at compile time.
  199.     */
  200.     mp2;
  201.  
  202. }       /* End of HelpGeneral()                                      */
  203.  
  204. /*********************************************************************
  205.  *  Name: HelpKeys
  206.  *
  207.  *  Description : Processes the WM_COMMAND message posted
  208.  *                by the Keys Help item of the Help menu
  209.  *
  210.  *  Concepts : Called from MainCommand when the Keys Help menu item
  211.  *             is selected.  Sends an HM_KEYS_HELP message to the
  212.  *             help instance so that the default Extended Help is
  213.  *             displayed.
  214.  *
  215.  *  API's : WinSendMsg
  216.  *
  217.  *  Parameters :  mp2 - Message parameter 2
  218.  *
  219.  *  Returns: None
  220.  *
  221.  ****************************************************************/
  222. VOID  HelpKeys(MPARAM mp2)
  223. {
  224. /* this just displays the system keys help panel                              */
  225.   if (fHelpEnabled)
  226.   {
  227.     if ((BOOL)WinSendMsg(hwndHelpInstance, HM_KEYS_HELP, NULL, NULL))
  228.     {
  229.       MessageBox(hwndMain, IDMSG_HELPDISPLAYERROR, MB_OK | MB_ERROR, FALSE);
  230.     }
  231.   }
  232. /*
  233.  * This routine currently doesn't use the mp2 parameter but
  234.  * it is referenced here to prevent an 'Unreferenced Parameter'
  235.  * warning at compile time.
  236.  */
  237.   mp2;
  238. }   /*   End of HelpKeys()                                                    */
  239.  
  240. /*********************************************************************
  241.  *  Name: HelpIndex
  242.  *
  243.  *  Description : Processes the WM_COMMAND message posted
  244.  *                by the Index Help item of the Help menu
  245.  *
  246.  *  Concepts : Called from MainCommand when the Index Help menu item
  247.  *             is selected.  Sends an HM_INDEX_HELP message to the
  248.  *             help instance so that the default Extended Help is
  249.  *             displayed.
  250.  *
  251.  *  API's : WinSendMsg
  252.  *
  253.  *  Parameters :  mp2 - Message parameter 2
  254.  *
  255.  *  Returns: None
  256.  *
  257.  ****************************************************************/
  258. VOID  HelpIndex(MPARAM mp2)
  259. {
  260. /* this just displays the system help index panel                             */
  261.   if (fHelpEnabled)
  262.   {
  263.     if ((BOOL)WinSendMsg(hwndHelpInstance, HM_HELP_INDEX, NULL, NULL))
  264.     {
  265.        MessageBox(hwndMain, IDMSG_HELPDISPLAYERROR, MB_OK | MB_ERROR, FALSE);
  266.     }
  267.   }
  268.  /*
  269.   * This routine currently doesn't use the mp2 parameter but
  270.   * it is referenced here to prevent an 'Unreferenced Parameter'
  271.   * warning at compile time.
  272.   */
  273.   mp2;
  274. }   /* End of HelpIndex()                                                     */
  275.  
  276. /*********************************************************************
  277.  *  Name: HelpProdInfo
  278.  *
  279.  *  Description : Processes the WM_COMMAND message posted
  280.  *                by the Index Help item of the Help menu
  281.  *
  282.  *  Concepts : Called from MainCommand when the Product
  283.  *             information Help menu item is selected.
  284.  *             Calls WinDlgBox to display the Product
  285.  *             Information dialog.
  286.  *
  287.  *  API's : WinDlgBox
  288.  *
  289.  *  Parameters :  mp2 - Message parameter 2
  290.  *
  291.  *  Returns: None
  292.  *
  293.  ****************************************************************/
  294. VOID  HelpProdInfo( MPARAM mp2)
  295. {
  296. /* display the Product Information dialog                                     */
  297.   WinDlgBox(HWND_DESKTOP, hwndMain, (PFNWP)ProdInfoDlgProc, (HMODULE)0,
  298.             IDD_PRODINFO, (PVOID)NULL);
  299.  /*
  300.   * This routine currently doesn't use the mp2 parameter but
  301.   * it is referenced here to prevent an 'Unreferenced Parameter'
  302.   * warning at compile time.
  303.   */
  304.     mp2;
  305.  
  306. }   /* End of HelpProdInfo()                                                  */
  307.  
  308. /*********************************************************************
  309.  *  Name: DisplayHelp
  310.  *
  311.  *  Description : Displays the help panel indicated
  312.  *
  313.  *  Concepts : Displays the help panel whose id is passed to
  314.  *             the routine.  Called whenever a help panel is
  315.  *             desired to be displayed, usually from the
  316.  *             WM_HELP processing of the dialog boxes.
  317.  *
  318.  *  API's : WinSendMsg
  319.  *
  320.  *  Parameters : idPanel - Id of the halp panel to be displayed
  321.  *
  322.  *  Returns: None
  323.  *
  324.  ****************************************************************/
  325. VOID DisplayHelpPanel(SHORT idPanel)
  326. {
  327.   if (fHelpEnabled)
  328.   {
  329.     if ((BOOL)WinSendMsg(hwndHelpInstance, HM_DISPLAY_HELP,
  330.             MPFROM2SHORT(idPanel, NULL), MPFROMSHORT(HM_RESOURCEID)))
  331.     {
  332.       MessageBox(hwndMainFrame, IDMSG_HELPDISPLAYERROR,
  333.                  MB_OK | MB_ERROR, TRUE);
  334.     }
  335.   }
  336. }   /*    End of DisplayHelpPanel()                                   */
  337.  
  338. /*********************************************************************
  339.  *  Name: DestroyHelpInstance
  340.  *
  341.  *  Description : Destroys the help instance for the application
  342.  *
  343.  *  Concepts : Called after exit from message loop. Calls
  344.  *             WinDestroyHelpInstance() to destroy the
  345.  *             help instance.
  346.  *
  347.  *  API's : WinDestroyHelpInstance
  348.  *
  349.  *  Parameters : None
  350.  * None
  351.  *  Returns:
  352.  *
  353.  ****************************************************************/
  354. VOID DestroyHelpInstance(VOID)
  355. {
  356.   if ((BOOL)hwndHelpInstance)
  357.   {
  358.      WinDestroyHelpInstance(hwndHelpInstance);
  359.   }
  360.  
  361. }   /*        End of DestroyHelpInstance()                                    */
  362.