|
|
1.1 ! root 1: /*==============================================================*\ ! 2: * Help.c - routines for the help manager interface ! 3: * Created 1990, Microsoft, IBM Corp. ! 4: *-------------------------------------------------------------- ! 5: * ! 6: * This module contains all the routines for interfacing with ! 7: * the IPF help manager. ! 8: * ! 9: *-------------------------------------------------------------- ! 10: * ! 11: * This source file contains the following functions: ! 12: * ! 13: * InitHelp() ! 14: * HelpHelpForHelp(mp2) ! 15: * HelpExtended(mp2) ! 16: * HelpKeys(mp2) ! 17: * HelpIndex(mp2) ! 18: * HelpTutorial(mp2) ! 19: * HelpAbout(mp2) ! 20: * DisplayHelpPanel(idPanel) ! 21: * DestroyHelpInstance() ! 22: * ! 23: \*==============================================================*/ ! 24: ! 25: /*--------------------------------------------------------------*\ ! 26: * Include files, macros, defined constants, and externs ! 27: \*--------------------------------------------------------------*/ ! 28: ! 29: ! 30: /* If DEBUG is defined, then the help panels will display their ! 31: * id values on their title bar. This is useful for determining ! 32: * which help panels are being shown for each dialog item. When ! 33: * the DEBUG directive is not defined, then the panel ids are not ! 34: * displayed. ! 35: */ ! 36: ! 37: /* ! 38: #define DEBUG ! 39: */ ! 40: ! 41: #define INCL_WINHELP ! 42: ! 43: #include <os2.h> ! 44: #include <string.h> ! 45: #include "sty_main.h" ! 46: #include "sty_xtrn.h" ! 47: #include "sty_dlg.h" ! 48: #include "sty_help.h" ! 49: ! 50: #define HELPLIBRARYNAMELEN 20 ! 51: ! 52: /*--------------------------------------------------------------*\ ! 53: * Global variables ! 54: \*--------------------------------------------------------------*/ ! 55: static HWND hwndHelpInstance; ! 56: static CHAR szLibName[HELPLIBRARYNAMELEN]; ! 57: static CHAR szWindowTitle[HELPLIBRARYNAMELEN]; ! 58: ! 59: ! 60: /*--------------------------------------------------------------*\ ! 61: * Entry point declarations ! 62: \*--------------------------------------------------------------*/ ! 63: MRESULT EXPENTRY AboutBoxDlgProc(HWND hwnd, USHORT msg, ! 64: MPARAM mp1, MPARAM mp2); ! 65: ! 66: ! 67: /****************************************************************\ ! 68: * Routine for initializing the help manager ! 69: *-------------------------------------------------------------- ! 70: * ! 71: * Name: InitHelp() ! 72: * ! 73: * Purpose: Initializes the IPF help facility ! 74: * ! 75: * Usage: Called once during initialization of the program ! 76: * ! 77: * Method: Initializes the HELPINIT structure and creates the ! 78: * help instance. If successful, the help instance ! 79: * is associated with the main window ! 80: * ! 81: * Returns: ! 82: * ! 83: \****************************************************************/ ! 84: VOID InitHelp(VOID) ! 85: { ! 86: HELPINIT hini; ! 87: ! 88: /* if we return because of an error, Help will be disabled */ ! 89: fHelpEnabled = FALSE; ! 90: ! 91: /* inititalize help init structure */ ! 92: hini.cb = sizeof(HELPINIT); ! 93: hini.ulReturnCode = NULL; ! 94: ! 95: hini.pszTutorialName = (PSZ)NULL; /* if tutorial added, add name here */ ! 96: ! 97: hini.phtHelpTable = (PHELPTABLE)MAKELONG(STYLE_HELP_TABLE, 0xFFFF); ! 98: hini.hmodHelpTableModule = NULL; ! 99: hini.hmodAccelActionBarModule = NULL; ! 100: hini.idAccelTable = NULL; ! 101: hini.idActionBar = NULL; ! 102: ! 103: if(!WinLoadString(hab, ! 104: NULL, ! 105: IDS_HELPWINDOWTITLE, ! 106: HELPLIBRARYNAMELEN, ! 107: (PSZ)szWindowTitle)) { ! 108: ! 109: MessageBox(hwndMain, IDMSG_CANNOTLOADSTRING, MB_OK | MB_ERROR, FALSE); ! 110: return; ! 111: } ! 112: ! 113: hini.pszHelpWindowTitle = (PSZ)szWindowTitle; ! 114: ! 115: /* if debugging, show panel ids, else don't */ ! 116: #ifdef DEBUG ! 117: hini.usShowPanelId = CMIC_SHOW_PANEL_ID; ! 118: #else ! 119: hini.usShowPanelId = CMIC_HIDE_PANEL_ID; ! 120: #endif ! 121: ! 122: if(!WinLoadString(hab, ! 123: NULL, ! 124: IDS_HELPLIBRARYNAME, ! 125: HELPLIBRARYNAMELEN, ! 126: (PSZ)szLibName)) { ! 127: ! 128: MessageBox(hwndMain, IDMSG_CANNOTLOADSTRING, MB_OK | MB_ERROR, FALSE); ! 129: return; ! 130: } ! 131: ! 132: hini.pszHelpLibraryName = (PSZ)szLibName; ! 133: ! 134: /* creating help instance */ ! 135: hwndHelpInstance = WinCreateHelpInstance(hab, &hini); ! 136: ! 137: if(!hwndHelpInstance || hini.ulReturnCode) { ! 138: MessageBox(hwndMainFrame, ! 139: IDMSG_HELPLOADERROR, ! 140: MB_OK | MB_ERROR, ! 141: TRUE); ! 142: return; ! 143: } ! 144: ! 145: /* associate help instance with main frame */ ! 146: if(!WinAssociateHelpInstance(hwndHelpInstance, hwndMainFrame)) { ! 147: MessageBox(hwndMainFrame, ! 148: IDMSG_HELPLOADERROR, ! 149: MB_OK | MB_ERROR, ! 150: TRUE); ! 151: return; ! 152: } ! 153: ! 154: /* help manager is successfully initialized so set flag to TRUE */ ! 155: fHelpEnabled = TRUE; ! 156: ! 157: } /* InitHelp() */ ! 158: ! 159: ! 160: /****************************************************************\ ! 161: * Processes the Help for Help command from the menu bar ! 162: *-------------------------------------------------------------- ! 163: * ! 164: * Name: HelpHelpForHelp(mp2) ! 165: * ! 166: * Purpose: Processes the WM_COMMAND message posted by the ! 167: * Help for Help item of the Help menu ! 168: * ! 169: * Usage: Called from MainCommand when the Help for Help ! 170: * menu item is selected ! 171: * ! 172: * Method: Sends an HM_DISPLAY_HELP message to the help ! 173: * instance so that the default Help For Help is ! 174: * displayed. ! 175: * ! 176: * Returns: ! 177: * ! 178: \****************************************************************/ ! 179: VOID HelpHelpForHelp(mp2) ! 180: MPARAM mp2; /* second parameter of WM_COMMAND message */ ! 181: { ! 182: ! 183: /* this just displays the system help for help panel */ ! 184: if(fHelpEnabled) ! 185: if(WinSendMsg(hwndHelpInstance, HM_DISPLAY_HELP, NULL, NULL)) ! 186: MessageBox(hwndMain, ! 187: IDMSG_HELPDISPLAYERROR, ! 188: MB_OK | MB_ERROR, ! 189: FALSE); ! 190: ! 191: /* This routine currently doesn't use the mp2 parameter but *\ ! 192: * it is referenced here to prevent an 'Unreferenced Parameter' ! 193: \* warning at compile time. */ ! 194: mp2; ! 195: ! 196: } /* HelpHelpForHelp() */ ! 197: ! 198: ! 199: /****************************************************************\ ! 200: * Processes the Extended Help command from the menu bar ! 201: *-------------------------------------------------------------- ! 202: * ! 203: * Name: HelpExtended(mp2) ! 204: * ! 205: * Purpose: Processes the WM_COMMAND message posted by the ! 206: * Extended Help item of the Help menu ! 207: * ! 208: * Usage: Called from MainCommand when the Extended Help ! 209: * menu item is selected ! 210: * ! 211: * Method: Sends an HM_EXT_HELP message to the help ! 212: * instance so that the default Extended Help is ! 213: * displayed. ! 214: * ! 215: * Returns: ! 216: * ! 217: \****************************************************************/ ! 218: VOID HelpExtended(mp2) ! 219: MPARAM mp2; /* second parameter of WM_COMMAND message */ ! 220: { ! 221: ! 222: /* this just displays the system extended help panel */ ! 223: if(fHelpEnabled) ! 224: if(WinSendMsg(hwndHelpInstance, HM_EXT_HELP, NULL, NULL)) ! 225: MessageBox(hwndMain, ! 226: IDMSG_HELPDISPLAYERROR, ! 227: MB_OK | MB_ERROR, ! 228: FALSE); ! 229: ! 230: /* This routine currently doesn't use the mp2 parameter but *\ ! 231: * it is referenced here to prevent an 'Unreferenced Parameter' ! 232: \* warning at compile time. */ ! 233: mp2; ! 234: ! 235: } /* HelpExtended() */ ! 236: ! 237: ! 238: /****************************************************************\ ! 239: * Processes the Keys Help command from the menu bar ! 240: *-------------------------------------------------------------- ! 241: * ! 242: * Name: HelpKeys(mp2) ! 243: * ! 244: * Purpose: Processes the WM_COMMAND message posted by the ! 245: * Keys Help item of the Help menu ! 246: * ! 247: * Usage: Called from MainCommand when the Keys Help ! 248: * menu item is selected ! 249: * ! 250: * Method: Sends an HM_KEYS_HELP message to the help ! 251: * instance so that the default Keys Help is ! 252: * displayed. ! 253: * ! 254: * Returns: ! 255: * ! 256: \****************************************************************/ ! 257: VOID HelpKeys(mp2) ! 258: MPARAM mp2; /* second parameter of WM_COMMAND message */ ! 259: { ! 260: ! 261: /* this just displays the system keys help panel */ ! 262: if(fHelpEnabled) ! 263: if(WinSendMsg(hwndHelpInstance, HM_KEYS_HELP, NULL, NULL)) ! 264: MessageBox(hwndMain, ! 265: IDMSG_HELPDISPLAYERROR, ! 266: MB_OK | MB_ERROR, ! 267: FALSE); ! 268: ! 269: ! 270: /* This routine currently doesn't use the mp2 parameter but *\ ! 271: * it is referenced here to prevent an 'Unreferenced Parameter' ! 272: \* warning at compile time. */ ! 273: mp2; ! 274: ! 275: } /* HelpKeys() */ ! 276: ! 277: ! 278: /****************************************************************\ ! 279: * Processes the Index Help command from the menu bar ! 280: *-------------------------------------------------------------- ! 281: * ! 282: * Name: HelpIndex(mp2) ! 283: * ! 284: * Purpose: Processes the WM_COMMAND message posted by the ! 285: * Index Help item of the Help menu ! 286: * ! 287: * Usage: Called from MainCommand when the Index Help ! 288: * menu item is selected ! 289: * ! 290: * Method: Sends an HM_INDEX_HELP message to the help ! 291: * instance so that the default Index Help is ! 292: * displayed. ! 293: * ! 294: * Returns: ! 295: * ! 296: \****************************************************************/ ! 297: VOID HelpIndex(mp2) ! 298: MPARAM mp2; /* second parameter of WM_COMMAND message */ ! 299: { ! 300: ! 301: /* this just displays the system help index panel */ ! 302: if(fHelpEnabled) ! 303: if(WinSendMsg(hwndHelpInstance, HM_HELP_INDEX, NULL, NULL)) ! 304: MessageBox(hwndMain, ! 305: IDMSG_HELPDISPLAYERROR, ! 306: MB_OK | MB_ERROR, ! 307: FALSE); ! 308: ! 309: ! 310: /* This routine currently doesn't use the mp2 parameter but *\ ! 311: * it is referenced here to prevent an 'Unreferenced Parameter' ! 312: \* warning at compile time. */ ! 313: mp2; ! 314: ! 315: } /* HelpIndex() */ ! 316: ! 317: ! 318: /****************************************************************\ ! 319: * Processes the Tutorial Help command from the menu bar ! 320: *-------------------------------------------------------------- ! 321: * ! 322: * Name: HelpTutorial(mp2) ! 323: * ! 324: * Purpose: Processes the WM_COMMAND message posted by the ! 325: * Tutorial Help item of the Help menu. While the ! 326: * standard template application does not include a ! 327: * Tutorial menu item, you can add one if your ! 328: * application has a tutorial. ! 329: * ! 330: * Usage: Called from MainCommand when the Tutorial Help ! 331: * menu item is selected ! 332: * ! 333: * Method: ! 334: * ! 335: * Returns: ! 336: * ! 337: \****************************************************************/ ! 338: VOID HelpTutorial(mp2) ! 339: MPARAM mp2; /* second parameter of WM_COMMAND message */ ! 340: { ! 341: ! 342: /*--------------------------------------------------------------*\ ! 343: * Insert code for any tutorial here ! 344: \*--------------------------------------------------------------*/ ! 345: ! 346: ! 347: /* This routine currently doesn't use the mp2 parameter but *\ ! 348: * it is referenced here to prevent an 'Unreferenced Parameter' ! 349: \* warning at compile time. */ ! 350: mp2; ! 351: ! 352: } /* HelpTutorial() */ ! 353: ! 354: /****************************************************************\ ! 355: * Processes the About command from the Help menu ! 356: *-------------------------------------------------------------- ! 357: * ! 358: * Name: HelpAbout(mp2) ! 359: * ! 360: * Purpose: Processes the WM_COMMAND message posted by the ! 361: * About item of the Help menu ! 362: * ! 363: * Usage: Called from MainCommand when the About ! 364: * menu item is selected ! 365: * ! 366: * Method: Calls WinDlgBox to display the about box dialog. ! 367: * ! 368: * Returns: ! 369: * ! 370: \****************************************************************/ ! 371: VOID HelpAbout(mp2) ! 372: MPARAM mp2; /* second parameter of WM_COMMAND message */ ! 373: { ! 374: /* display the AboutBox dialog */ ! 375: WinDlgBox(hwndMain, ! 376: hwndMain, ! 377: (PFNWP)AboutBoxDlgProc, ! 378: NULL, ! 379: IDD_ABOUTBOX, ! 380: (PVOID)NULL); ! 381: ! 382: /* This routine currently doesn't use the mp2 parameter but *\ ! 383: * it is referenced here to prevent an 'Unreferenced Parameter' ! 384: \* warning at compile time. */ ! 385: mp2; ! 386: ! 387: } /* HelpAbout() */ ! 388: ! 389: ! 390: /****************************************************************\ ! 391: * Displays the help panel indicated ! 392: *-------------------------------------------------------------- ! 393: * ! 394: * Name: DisplayHelpPanel(idPanel) ! 395: * ! 396: * Purpose: Displays the help panel whose id is given ! 397: * ! 398: * Usage: Called whenever a help panel is desired to be ! 399: * displayed, usually from the WM_HELP processing ! 400: * of the dialog boxes ! 401: * ! 402: * Method: Sends HM_DISPLAY_HELP message to the help instance ! 403: * ! 404: * Returns: ! 405: * ! 406: \****************************************************************/ ! 407: VOID DisplayHelpPanel(idPanel) ! 408: SHORT idPanel; /* ID of the help panel to be displayed */ ! 409: { ! 410: ! 411: if(fHelpEnabled) ! 412: if(WinSendMsg(hwndHelpInstance, ! 413: HM_DISPLAY_HELP, ! 414: MPFROM2SHORT(idPanel, NULL), ! 415: MPFROMSHORT(HM_RESOURCEID))) ! 416: ! 417: MessageBox(hwndMainFrame, ! 418: IDMSG_HELPDISPLAYERROR, ! 419: MB_OK | MB_ERROR, ! 420: TRUE); ! 421: ! 422: ! 423: } /* DisplayHelpPanel() */ ! 424: ! 425: ! 426: ! 427: /****************************************************************\ ! 428: * Destroys the help instance ! 429: *-------------------------------------------------------------- ! 430: * ! 431: * Name: DestroyHelpInstance(VOID) ! 432: * ! 433: * Purpose: Destroys the help instance for the application ! 434: * ! 435: * Usage: Called after exit from message loop ! 436: * ! 437: * Method: Calls WinDestroyHelpInstance() to destroy the ! 438: * help instance ! 439: * ! 440: * Returns: ! 441: * ! 442: \****************************************************************/ ! 443: VOID DestroyHelpInstance(VOID) ! 444: { ! 445: if(hwndHelpInstance) { ! 446: WinDestroyHelpInstance(hwndHelpInstance); ! 447: } ! 448: ! 449: } /* DestroyHelpInstance() */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.