|
|
1.1 ! root 1: /**************************************************************************** ! 2: ! 3: PROGRAM: lqh.c ! 4: ! 5: MODULE: lqhinit.c ! 6: ! 7: FUNCTIONS: ! 8: Init() ! 9: ! 10: COMMENTS: ! 11: This module contains all the initialization that needs to be done ! 12: when opening a new database. It returns TRUE if initialization was ! 13: successful, or FALSE if the requested database could not be found ! 14: or opened. ! 15: ! 16: ****************************************************************************/ ! 17: ! 18: #include "lqh.h" ! 19: ! 20: BOOL Init() { ! 21: USHORT i; ! 22: CHAR chMessage[80]; ! 23: BYTE bScanCode; ! 24: NC ncRequest; ! 25: ! 26: if (ncHelp) /* Closes the current data file if its open */ ! 27: HelpClose(ncHelp); ! 28: ! 29: /* Open the help data file */ ! 30: ! 31: if (!(ncHelp = HelpOpen((PCH) chHelpName))) { ! 32: Dstrcpy(chMessage, "Cannot open "); ! 33: Dstrcat(chMessage, chHelpName); ! 34: BoxMessage(chMessage, atWARNING, THIN, hmou, TRUE); ! 35: return FALSE; ! 36: } ! 37: ! 38: /* A table is maintained of all preloaded topics that includes the ! 39: * context number, the segment selector, the current top line displayed, ! 40: * and the current highlighted line (if any). When HelpSearch is called, ! 41: * it checks this table, and if the context number is found, it uses the ! 42: * selector associated with that context number to retrieve the ! 43: * decompressed data. If the context number is not found, it will call the ! 44: * help-engine routines to decompress the data. Whenever Init() is called, ! 45: * it deallocates any existing selectors, and clears all the context ! 46: * numbers, that indicate no data has been preloaded. ! 47: */ ! 48: ! 49: for (i = 0; i < MAXPRELOAD; i++) { ! 50: selTable[i].ncContext = (NC) 0; /* no context */ ! 51: selTable[i].usTopLine = 1; /* default current position */ ! 52: if (selTable[i].sel) /* Frees any allocated memory */ ! 53: DosFreeSeg(selTable[i].sel); ! 54: } ! 55: ! 56: usListPos = 0; ! 57: if ((ncRequest = HelpNc("List categories", ncHelp))) { ! 58: ! 59: /* The list of categories will be small, so both the ! 60: * compressed and decompressed data are placed in the 64K-memory block ! 61: * that is used for the character-attribute strings. ! 62: */ ! 63: ! 64: HelpLook(ncRequest, MAKEP(selStringTable, 0)); ! 65: HelpDecomp(MAKEP(selStringTable, 0), ! 66: MAKEP(selStringTable, 32000), ncRequest); ! 67: while (HelpGetLine(usListPos + 2, MAXCATNAME, ! 68: (PCH) lstList[usListPos].name, MAKEP(selStringTable, 32000)) ! 69: > 1) ! 70: usListPos++; ! 71: } ! 72: ! 73: return TRUE; ! 74: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.