home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR4 / V12N15.ZIP / DEMODL.ZIP / DLL.H < prev    next >
C/C++ Source or Header  |  1992-08-01  |  27KB  |  761 lines

  1. /*---------------------------------------------------------------------------|
  2. |                                                                            |
  3. |  DLL.H                                                                     |
  4. |                                                                            |
  5. |  Copyright (C) Microsoft Corporation 1990.                                 |
  6. |  All Rights reserved.                                                      |
  7. |                                                                            |
  8. ------------------------------------------------------------------------------
  9. |                                                                            |
  10. |  Module Intent                                                             |
  11. |                                                                            |
  12. |  Exports Winhelp's DLL macro binding functions (for LDLLHandler).           |
  13. |                                                                            |
  14. ------------------------------------------------------------------------------
  15. |    How it could be improved:  
  16. |
  17. |   rename lockcallbacks to lockvptr  
  18. |      remove duplicate names  (search DUPLICATES)
  19. |     Naming on functions is Hungarian, but may be confusing--
  20. |          eg: HFOpenHfs does not open an hfs, but a bag file
  21. |         but- CloseHfs does close Hfs.
  22. |         but- AccessHfs does not access hfs, but bag file status.  
  23. ----------------------------------------------------------------------------*/
  24. /***************************************************************************
  25.  *  RegisterRoutine Prototypes.
  26.  *
  27.  *     Syntax of the proto-type is as follows:
  28.  *       proto           ::= [parmlist]
  29.  *       parmlist        ::= NULL OR [params]
  30.  *       params          ::= [param] OR ([param] [params])
  31.  *       param           ::= "i" OR "u" OR "s" OR "I" OR "U" OR "S"
  32.  *       rettype         ::= [param] OR "v"
  33.  *
  34.  *     Example:          "uSiS"
  35.  *                       ""
  36.  *                       "uSs"
  37.  * 
  38.  *               Short Signed   'i'
  39.  *               Long Signed    'I'
  40.  *               Short Unsigned 'u'
  41.  *               Long Unsigned  'U'
  42.  *               Near String    's'
  43.  *               Far  String     'S'
  44.  *               Void           'v'
  45.  *
  46.  *  Custom macros may be embedded.  There are coding rules.            
  47.  *  Embedding macro calls:      Syntax of the string is as follows:
  48.  *       list            ::= NULL OR [macrolist]
  49.  *       macrolist       ::= [macro] OR ([macro] ":" [macrolist])
  50.  *       macro           ::= [name] "(" [paramlist] ")"
  51.  *       name            ::= (ALPHA OR "_") [namechars]
  52.  *       namechars       ::= NULL OR ALPHANUM OR "_"
  53.  *       paramlist       ::= NULL OR [params]
  54.  *       params          ::= [param] OR ([param] "," [params])
  55.  *       param           ::= [posint] OR [int] OR [string] OR [macro] OR [var
  56.  *       posint          ::= "0"..."9"
  57.  *       int             ::= ("-" ([posint] OR [macro])) OR [posint]
  58.  *       string          ::= (""" CHARS """) OR ("`" CHARS "'")
  59.  *       var             ::= "hwndContext" OR "qchPath" OR "qError"
  60.  *
  61.  *   Example:        call1(5, "string", -call2()):call3("string")
  62.  *                              call1(call1(call1(0))):call2()
  63.  *
  64.  *
  65.  ***************************************************************************/
  66. //
  67. // for use with the 'qError' internal variable 
  68. #define wMACRO_ERROR    128             /* Maximum length of an error msz   */
  69.  
  70.                                         /* NOTE:  These #defines must be    */
  71.                                         /*   ordered because they are used  */
  72.                                         /*   as indexes into rgmpWMErrWErrs */
  73. #define wMERR_NONE           0          /* No error                         */
  74. #define wMERR_MEMORY         1          /* Out of memory (local)            */
  75. #define wMERR_PARAM          2          /* Invalid parameter passed         */
  76. #define wMERR_FILE           3          /* Invalid file parameter           */
  77. #define wMERR_ERROR          4          /* General macro error              */
  78. #define wMERR_MESSAGE        5          /* Macro error with message         */
  79.  
  80.                                         /* Flags set in fwFlags to indicate*/
  81.                                         /*   how the error *MAY* be handled.*/
  82.  
  83. #define fwMERR_ABORT    0x0001          /* Allow the "abort" option.        */
  84. #define fwMERR_CONTINUE 0x0002          /* Allow the "continue" option.     */
  85. #define fwMERR_RETRY    0x0004          /* Allow the "retry" option.        */
  86.  
  87. /**********
  88. **
  89. **  The Macro Error structure is used to allow a macro to return error
  90. **  information.  It allows the macro to not only return pre-defined
  91. **  errors, but also to use the error string provided to pass back a
  92. **  customized error string.
  93. **
  94. *********/
  95.  
  96. typedef struct
  97.   {                                     /* Contains flags indicating how an */
  98.                                         /*   error will be handled -- init- */
  99.   WORD  fwFlags;                        /*   ially set to fwMERR_ABORT      */
  100.                                         /* Error number if one occurs --    */
  101.   WORD  wError;                         /*   initially set to wMERR_NONE.   */
  102.                                         /* If wError == wMERR_MESSAGE, this */
  103.                                         /*   array will contain the error   */
  104.   char  rgchError[wMACRO_ERROR];        /*   message to be displayed.       */
  105.   } ME, NEAR * PME,  FAR * QME;
  106.  
  107. // end 'qError' internal variable defines.
  108.  
  109. /*---------------------------------------------------------------------------|
  110. |                                                                            |
  111. |                               Defines                                      |
  112. |                                                                            |
  113. ----------------------------------------------------------------------------*/
  114.  
  115. // Classes of messages that may be  */
  116. //   sent to DLLs (legal returns for DW_WHATMSG handler 
  117. //   in LDLLHandler routine.  (see autodoc notes & example below)
  118.  
  119. typedef    WORD    RC;            // Error return (return code)
  120.  
  121. #define DC_NOMSG     0x00000000         /* Classes of messages that may be  */
  122. #define DC_MINMAX    0x00000001         /*   send to DLLs                   */
  123. #define DC_INITTERM  0x00000002
  124. #define DC_JUMP      0x00000004
  125. #define DC_ACTIVATE  0x00000008
  126. #define DC_CALLBACKS 0x00000010
  127.  
  128. #define DW_NOTUSED   0            // Messages sent to DLLs.
  129. #define DW_WHATMSG   1
  130. #define DW_MINMAX    2
  131. #define DW_SIZE      3
  132. #define DW_INIT      4
  133. #define DW_TERM      5
  134. #define DW_STARTJUMP 6
  135. #define DW_ENDJUMP   7
  136. #define DW_CHGFILE   8
  137. #define DW_ACTIVATE  9
  138. #define    DW_CALLBACKS 10
  139.  
  140.  
  141. /* Embedded Window messages */
  142. #define    EWM_RENDER        0x706A
  143. #define    EWM_QUERYSIZE        0x706B
  144. #define    EWM_ASKPALETTE        0x706C
  145. #define    EWM_FINDNEWPALETTE    0x706D
  146.  
  147. /* DLLs should process this if they want to their audio to reset
  148.    correctly when another audio device attempts to use audio. */
  149. #define    WM_AUDIORESET    0x706E
  150.  
  151. #define    HLPMENUEDITCOPY        0x0002
  152.  
  153. typedef struct tagCreateInfo {
  154.   short   idMajVersion;
  155.   short   idMinVersion;
  156.   LPSTR   szFileName;        // Current Help file
  157.   LPSTR   szAuthorData;        // Text passed by the author
  158.   HANDLE  hfs;            // Handle to the current file system
  159.   DWORD   coFore;        // Foreground color for this topic
  160.   DWORD   coBack;        // Background color for this topic
  161. } EWDATA, FAR *QCI;
  162.  
  163. typedef    struct    tagRenderInfo {
  164.     RECT    rc;
  165.     HDC    hdc;
  166. }    RENDERINFO,
  167.     FAR * QRI;
  168.  
  169.  
  170. // Window variables:
  171. #define    GWW_HSE        0    //Handle to the Searcher State structure
  172. #define    GWW_HCALLBACKS    2    //Pointer to Help callbacks    
  173. #define    GWL_INIT    4    //Status if bag.ini or initialization wrong.
  174.  
  175. #define    wMGR_EXTRA    8    /* This should be the total size of
  176.                 ** everything above.
  177.                 */
  178.  
  179. #define INIT_FAILED    0
  180. #define INIT_FTOK    1
  181. #define INIT_MMWINOK    2    
  182.  
  183. typedef FARPROC FAR *VPTR;
  184.  
  185. extern    BOOL PASCAL FAR InitRoutines(LPSTR,DWORD);
  186. extern    BOOL PASCAL FAR FFinalizeMVDLL(void);
  187. extern    VPTR PASCAL FAR LpLockCallbacks(void);
  188. extern    BOOL PASCAL FAR FUnlockCallbacks(void);
  189. extern    BOOL PASCAL FAR FInitCallBacks(
  190.     VPTR     VPtr,
  191.     LONG    lVersion);
  192. extern    DWORD PASCAL FAR LGetStatus(void);
  193. extern    BOOL FAR PASCAL MVHelp(
  194.     HWND    hwndMain,
  195.     LPSTR    lpszPath,
  196.     LPSTR    lpszFile,
  197.     LPSTR lpszMacro);
  198.  
  199.  
  200. /*-------------------------------------------------------------------------*\
  201. *
  202. *                               Defines
  203. *
  204. \-------------------------------------------------------------------------**/
  205.  
  206. /* file mode flags */
  207.  
  208. #define fFSReadOnly       (BYTE)0x01  /* file (FS) is readonly                */
  209. #define fFSOpenReadOnly   (BYTE)0x02  /* file (FS) is opened in readonly mode */
  210.  
  211. #define fFSReadWrite      (BYTE)0x00  // file (FS) is readwrite
  212. #define fFSOpenReadWrite  (BYTE)0x00  // file (FS) is opened in read/write mode
  213.  
  214. /* seek origins */
  215.  
  216. #define wFSSeekSet      0
  217. #define wFSSeekCur      1
  218. #define wFSSeekEnd      2
  219.  
  220. /* low level info options */
  221.  
  222. #define wLLSameFid    0
  223. #define wLLDupFid     1
  224. #define wLLNewFid     2
  225.  
  226. // Callback Function Table offsets:
  227. #define HE_NotUsed               0
  228. #define HE_HfsOpenSz             1
  229. #define HE_RcCloseHfs            2
  230. #define HE_HfOpenHfs             3
  231. #define HE_RcCloseHf             4
  232. #define HE_LcbReadHf             5
  233. #define HE_LTellHf               6
  234. #define HE_LSeekHf               7
  235. #define HE_FEofHf                8
  236. #define HE_LcbSizeHf             9
  237. #define HE_FAccessHfs           10
  238. #define HE_RcLLInfoFromHf       11
  239. #define HE_RcLLInfoFromHfs      12
  240. #define HE_ErrorW               13
  241. #define HE_ErrorSz              14
  242. #define HE_GetInfo              15
  243. #define HE_API                  16
  244.  
  245.                              /* Return codes                     */
  246. #define rcSuccess       0
  247. #define rcFailure       1
  248. #define rcExists        2
  249. #define rcNoExists      3
  250. #define rcInvalid       4
  251. #define rcBadHandle     5
  252. #define rcBadArg        6
  253. #define rcUnimplemented 7
  254. #define rcOutOfMemory   8
  255. #define rcNoPermission  9
  256. #define rcBadVersion    10
  257. #define rcDiskFull      11
  258. #define rcInternal      12
  259. #define rcNoFileHandles 13
  260. #define rcFileChange    14
  261. #define rcTooBig        15
  262.  
  263. // following not from core engine:
  264. #define rcReadError     101
  265.  
  266. /**
  267. *  Errors for Error()
  268. **/
  269.                                         /* Errors to generate               */
  270. #define wERRS_OOM                   2   /* Out of memory                    */
  271. #define wERRS_NOHELPPS              3   /* No help during printer setup     */
  272. #define wERRS_NOHELPPR              4   /* No help while printing           */
  273. #define wERRS_FNF                1001   /* Cannot find file                 */
  274. #define wERRS_NOTOPIC            1002   /* Topic does not exist             */
  275. #define wERRS_NOPRINTER          1003   /* Cannot print                     */
  276. #define wERRS_PRINT              1004
  277. #define wERRS_EXPORT             1005   /* Cannot copy to clipboard         */
  278. #define wERRS_BADFILE            1006
  279. #define wERRS_OLDFILE            1007
  280. #define wERRS_Virus              1011   /* Bad .EXE                         */
  281. #define wERRS_BADDRIVE           1012   /* Invalid drive                    */
  282. #define wERRS_WINCLASS           1014   /* Bad window class                 */
  283. #define wERRS_BADKEYWORD         3012   /* Invalid keyword                  */
  284. #define wERRS_BADPATHSPEC        3015   /* Invalid path specification       */
  285. #define wERRS_PATHNOTFOUND       3017   /* Path not found                   */
  286. #define wERRS_DIALOGBOXOOM       3018   /* Insufficient memory for dialog   */
  287. #define wERRS_DiskFull           5001   /* Disk is full                     */
  288. #define wERRS_FSReadWrite        5002   /* File read/write failure          */
  289.  
  290. /**
  291. * Actions for LGetInfo()
  292. **/
  293.  
  294. #define GI_NOTHING   0                  /* Not used.                        */
  295. #define GI_INSTANCE  1                  /* Application instance handle      */
  296. #define GI_MAINHWND  2                  /* Main window handle               */
  297. #define GI_CURRHWND  3                  /* Current window handle            */
  298. #define GI_HFS       4                  /* Handle to file system in use     */
  299. #define GI_FGCOLOR   5                  /* Foreground color used by app     */
  300. #define GI_BKCOLOR   6                  /* Background color used by app     */
  301. #define GI_TOPICNO   7                  /* Topic number                     */
  302. #define GI_HPATH     8                  /* Handle containing path  -- caller*/
  303.                                         /*   must free                      */
  304.  
  305.  
  306. /*-------------------------------------------------------------------------
  307. *
  308. *                               Types
  309. *
  310. \-------------------------------------------------------------------------**/
  311.  
  312. typedef WORD  RC;                   /* Error return (return code)       */
  313. typedef HANDLE HFS;                 /* Handle to a file system          */
  314. typedef HANDLE HF;                  /* Handle to a file system bag file     */
  315.  
  316. /*---------------------------------------------------------------------------
  317. *
  318. *                       Public Functions pointers
  319. *
  320. |-------------------------------------------------------------------------**/
  321.  
  322. /*-------------------------------------------------------------------------*\
  323. *
  324. * Function:     RcGetFSError()
  325. *
  326. * Purpose:      return the most recent FS error code
  327. *
  328. * Method:       Give value of last error that the file system encountered.
  329. *
  330. * ASSUMES
  331. *
  332. *   globals IN: rcFSError - current error code; set by most recent FS call
  333. *
  334. * PROMISES
  335. *
  336. *   returns:    returns current error in file system.
  337. *
  338. \-------------------------------------------------------------------------**/
  339.  
  340. typedef RC    (FAR PASCAL *LPFN_RCGETFSERROR)(void);
  341.  
  342. /*-------------------------------------------------------------------------*\
  343. *
  344. * Function:     HfsOpenSz( sz, bFlags )
  345. *
  346. * Purpose:      Open a file system
  347. *
  348. * ASSUMES
  349. *
  350. *   args IN:    sz - path to file system to open
  351. *               bFlags - fFSOpenReadOnly or fFSOpenReadWrite
  352. *
  353. * PROMISES
  354. *
  355. *   returns:    handle to file system if opened OK, else hNil
  356. *
  357. \-------------------------------------------------------------------------**/
  358.  
  359. typedef HFS (FAR PASCAL *LPFN_HFSOPENSZ)( LPSTR, BYTE );
  360.  
  361.  
  362. /*-------------------------------------------------------------------------*\
  363. *
  364. * Function:     RcCloseHfs( hfs )
  365. *
  366. * Purpose:      Close an open file system.
  367. *               All bag files must be closed or changes made will be lost
  368. *
  369. * ASSUMES
  370. *
  371. *   args IN:    hfs - handle to an open file system
  372. *
  373. * PROMISES
  374. *
  375. *   returns:    standard return code
  376. *
  377. *   globals OUT:  rcFSError
  378. *
  379. \-------------------------------------------------------------------------**/
  380.  
  381. typedef HFS (FAR PASCAL *LPFN_RCCLOSEHFS)( HFS );
  382.  
  383.  
  384. /*-------------------------------------------------------------------------*\
  385. *
  386. * Function:     HfOpenHfs( hfs, sz, bFlags )
  387. *
  388. * Purpose:      open a bag file in a file system
  389. *
  390. * ASSUMES
  391. *
  392. *   args IN:    hfs     - handle to file system
  393. *               sz      - name (key) of bag file to open
  394. *               bFlags  - 
  395. *
  396. * PROMISES
  397. *
  398. *   returns:    handle to open bag file or hNil on failure
  399. *
  400. * Notes:  strlen( qNil ) and strcpy( s, qNil ) don't work as they should.
  401. *
  402. \-------------------------------------------------------------------------**/
  403.  
  404. typedef HF    (FAR PASCAL  *LPFN_HFOPENHFS) (HFS, LPSTR, BYTE);
  405.  
  406. /*-------------------------------------------------------------------------*\
  407. *
  408. * Function:     RcCloseHf( hf )
  409. *
  410. * Purpose:      close an open bag file in a file system
  411. *
  412. * Method:       If the bag file is dirty, copy the scratch bag file back to the
  413. *               FS bag file.  If this is the first time the bag file has been closed,
  414. *               we enter the name into the FS directory.  If this bag file is
  415. *               the FS directory, store the location in a special place
  416. *               instead.  Write the FS directory and header to disk.
  417. *               Do other various hairy stuff.
  418. *
  419. * ASSUMES
  420. *
  421. *   args IN:    hf  - bag file handle
  422. *
  423. * PROMISES
  424. *
  425. *   returns:    rcSuccess on successful closing
  426. *
  427. \-------------------------------------------------------------------------**/
  428.  
  429. typedef RC    (FAR PASCAL  *LPFN_RCCLOSEHF) ( HF);
  430.  
  431. /*-------------------------------------------------------------------------*\
  432. *
  433. * Function:     LcbReadHf(hf, qb, lcb)
  434. *
  435. * Purpose:      read bytes from a bag file in a file system
  436. *
  437. * ASSUMES
  438. *
  439. *   args IN:    hf  - bag file
  440. *               lcb - number of bytes to read
  441. *
  442. * PROMISES
  443. *
  444. *   returns:    number of bytes actually read; -1 on error
  445. *
  446. *   args OUT:   qb  - data read from bag file goes here (must be big enough)
  447. *
  448. * Notes:        These are signed longs we're dealing with.  This means
  449. *               behaviour is different from read() when < 0.
  450. *
  451. \-------------------------------------------------------------------------**/
  452.  
  453. typedef LONG  (FAR PASCAL  *LPFN_LCBREADHF) ( HF, LPBYTE, LONG);
  454.  
  455. /*-------------------------------------------------------------------------*\
  456. *
  457. * Function:     LcbWriteHf( hf, qb, lcb )
  458. *
  459. * Purpose:      write the contents of buffer into bag file
  460. *
  461. * Method:       If bag file isn't already dirty, copy data into temp file.
  462. *               Do the write.
  463. *
  464. * ASSUMES
  465. *
  466. *   args IN:    hf  - bag file
  467. *               qb  - user's buffer full of stuff to write
  468. *               lcb - number of bytes of qb to write
  469. *
  470. * PROMISES
  471. *
  472. *   returns:    number of bytes written if successful, -1L if not
  473. *
  474. *   args OUT:   hf - lifCurrent, lcbFile updated; dirty flag set
  475. *
  476. *   globals OUT: rcFSError
  477. *
  478. \-------------------------------------------------------------------------**/
  479.  
  480. typedef LONG  (FAR PASCAL  *LPFN_LCBWRITEHF) ( HF, LPBYTE, LONG);
  481.  
  482. /*-------------------------------------------------------------------------*\
  483. *
  484. * Function:     LTellHf( hf )
  485. *
  486. * Purpose:      return current bag file position
  487. *
  488. * ASSUMES
  489. *
  490. *   args IN:    hf - handle to open bag file
  491. *
  492. * PROMISES
  493. *
  494. *   returns:    bag file position
  495. *
  496. \-------------------------------------------------------------------------**/
  497.  
  498. typedef LONG  (FAR PASCAL  *LPFN_LTELLHF) ( HF);
  499.  
  500. /*-------------------------------------------------------------------------*\
  501. *
  502. * Function:     LSeekHf( hf, lOffset, wOrigin )
  503. *
  504. * Purpose:      set current bag file pointer
  505. *
  506. * ASSUMES
  507. *
  508. *   args IN:    hf      - bag file
  509. *               lOffset - offset from origin
  510. *               wOrigin - origin (wSeekSet, wSeekCur, or wSeekEnd)
  511. *
  512. * PROMISES
  513. *
  514. *   returns:    new position offset in bytes from beginning of bag file
  515. *               if successful, or -1L if not
  516. *
  517. *   state OUT:  bag file pointer is set to new position unless error occurs,
  518. *               in which case it stays where it was.
  519. *
  520. \-------------------------------------------------------------------------**/
  521.  
  522. typedef LONG  (FAR PASCAL  *LPFN_LSEEKHF) ( HF, LONG, WORD);
  523.  
  524. /*-------------------------------------------------------------------------*\
  525. *
  526. * Function:     FEofHf()
  527. *
  528. * Purpose:      Tell whether bag file pointer is at end of file.
  529. *
  530. * ASSUMES
  531. *
  532. *   args IN:    hf
  533. *
  534. * PROMISES
  535. *
  536. *   returns:    fTrue if bag file pointer is at EOF, fFalse otherwise
  537. *
  538. \-------------------------------------------------------------------------**/
  539.  
  540. typedef BOOL  (FAR PASCAL  *LPFN_FEOFHF) ( HF);
  541.  
  542. /*-------------------------------------------------------------------------*\
  543. *
  544. * Function:     LcbSizeHf( hf )
  545. *
  546. * Purpose:      return the size in bytes of specified bag file
  547. *
  548. * ASSUMES
  549. *
  550. *   args IN:    hf - bag file handle
  551. *
  552. * PROMISES
  553. *
  554. *   returns:    size of the bag file in bytes
  555. *
  556. \-------------------------------------------------------------------------**/
  557.  
  558. typedef LONG  (FAR PASCAL  *LPFN_LCBSIZEHF) ( HF);
  559.  
  560. /*-------------------------------------------------------------------------*\
  561. *
  562. * Function:     FAccessHfs( hfs, sz, bFlags )
  563. *
  564. * Purpose:      Determine existence or legal access to a FS bag file
  565. *
  566. * ASSUMES
  567. *
  568. *   args IN:    hfs
  569. *               sz      - bag file name
  570. *               bFlags  - ignored
  571. *
  572. * PROMISES
  573. *
  574. *   returns:    fTrue if bag file exists (is accessible in stated mode),
  575. *               fFalse otherwise
  576. *
  577. * Bugs:         access mode part is unimplemented
  578. *
  579. \-------------------------------------------------------------------------**/
  580.  
  581. typedef BOOL  (FAR PASCAL  *LPFN_FACCESSHFS) ( HFS, LPSTR, BYTE);
  582.  
  583. /*------------------
  584.  -
  585.  - Name:       ErrorW
  586.  *
  587.  * Purpose:    Displays an error message
  588.  *
  589.  * Arguments:  nError - string identifyer  See wERRS_* messages.
  590.  *
  591.  * Returns:    Nothing.
  592.  *
  593.  -----------------*/
  594.  
  595. typedef VOID  (FAR PASCAL  *LPFN_ERRORW) ( int );
  596.  
  597. /*--------------------------------------------------------------------------
  598.  *
  599.  -  Name:         ErrorSz
  600.  -
  601.  *  Purpose:      Displays standard Help error message dialog based
  602.  *                the string passed.
  603.  *
  604.  *  Arguments:    lpstr - string to display
  605.  *
  606.  *  Returns:      Nothing.
  607.  *
  608.  --------------------------------------------------------------------------*/
  609.  
  610. typedef VOID  (FAR PASCAL  *LPFN_ERRORSZ) ( LPSTR );
  611.  
  612. /*--------------------------------------------------------------------------
  613.  *
  614.  -  Name: LGetInfo
  615.  -
  616.  *  Purpose: Gets global information from the app.
  617.  *
  618.  *  Arguments:  hwnd  - window handle of topic to query.
  619.  *              wItem - item to get
  620.  *                       GI_INSTANCE  -  Application instance handle
  621.  *                       GI_MAINHWND  -  Main window handle
  622.  *                       GI_CURRHWND  -  Current window handle
  623.  *                       GI_HFS       -  Handle to file system in use
  624.  *                       GI_FGCOLOR   -  Foreground color used by app
  625.  *                       GI_BKCOLOR   -  Background color used by app
  626.  *                       GI_TOPICNO   -  Topic number
  627.  *                       GI_HPATH     -  Handle containing path  -- caller
  628.  *                                       must free
  629.  *
  630.  *  Notes: if the HWND is NULL, then the data will come from the window
  631.  *         which currently has the focus.
  632.  *
  633.  --------------------------------------------------------------------------*/
  634.  
  635.  
  636. typedef LONG  (FAR PASCAL  *LPFN_LGETINFO) (WORD, HWND);
  637.  
  638. /*------------------
  639.  -
  640.  - Name:       FAPI
  641.  *
  642.  * Purpose:    Post a message for Help requests
  643.  *
  644.  * Arguments:
  645.  *             qchHelp         path (if not current directory) and file
  646.  *                             to use for Help topic.
  647.  *             usCommand       Command to send to Help
  648.  *             ulData          Data associated with command:
  649.  *
  650.  *
  651.  * Returns:    TRUE iff success
  652.  *
  653.  -----------------*/
  654.  
  655. typedef LONG  (FAR PASCAL  *LPFN_FAPI) ( LPSTR, WORD, DWORD );
  656.  
  657. /*--------------------------------------------------------------------------\
  658. *
  659. - Function:     RcLLInfoFromHf( hf, wOption, qfid, qlBase, qlcb )
  660. -
  661. * Purpose:      Map an HF into low level file info.
  662. *
  663. * ASSUMES
  664. *   args IN:    hf                  - an open HF
  665. *               qfid, qlBase, qlcb  - pointers to user's variables
  666. *               wOption             - wLLSameFid, wLLDupFid, or wLLNewFid
  667. *
  668. * PROMISES
  669. *   returns:    RcFSError(); rcSuccess on success
  670. *
  671. *   args OUT:   qfid    - depending on value of wOption, either
  672. *                         the same fid used by hf, a dup() of this fid,
  673. *                         or a new fid obtained by reopening the bag file.
  674. *
  675. *               qlBase  - byte offset of first byte in the bag file
  676. *               qlcb    - size in bytes of the data in the bag file
  677. *
  678. *   globals OUT: rcFSError
  679. *
  680. * Notes:        It is possible to read data outside the range specified
  681. *               by *qlBase and *qlcb.  Nothing is guaranteed about what
  682. *               will be found there.
  683. *               If wOption is wLLSameFid or wLLDupFid, and the FS is
  684. *               opened in write mode, this fid will be writable.
  685. *               However, writing is not allowed and may destroy the
  686. *               file system.
  687. *
  688. *               Fids obtained with the options wLLSameFid and wLLDupFid
  689. *               share a file pointer with the hfs.  This file pointer
  690. *               may change after any operation on this FS.
  691. *               The fid obtained with the option wLLSameFid may be closed
  692. *               by FS operations.  If it is, your fid is invalid.
  693. *
  694. *               NULL can be passed for qfid, qlbase, qlcb and this routine
  695. *               will not pass back the information.
  696. *
  697. * Bugs:         wLLDupFid is unimplemented.
  698. *
  699. * +++
  700. *
  701. * Method:       
  702. *
  703. * Notes:        
  704. *
  705. \--------------------------------------------------------------------------*/
  706.  
  707. typedef RC    (FAR PASCAL  *LPFN_RCLLINFOFROMHF) ( HF, WORD, WORD FAR *, LONG FAR *, LONG FAR * );
  708.  
  709. /*--------------------------------------------------------------------------\
  710. *
  711. - Function:     RcLLInfoFromHfs( hfs, sz, wOption, qfid, qlBase, qlcb )
  712. -
  713. * Purpose:      Map an HF into low level file info.
  714. *
  715. * ASSUMES
  716. *   args IN:    hfs                 - an open HFS
  717. *               szName              - name of bag file in FS
  718. *               qfid, qlBase, qlcb  - pointers to user's variables
  719. *               wOption             - wLLSameFid, wLLDupFid, or wLLNewFid
  720. *
  721. * PROMISES
  722. *   returns:    RcFSError(); rcSuccess on success
  723. *
  724. *   args OUT:   qfid    - depending on value of wOption, either
  725. *                         the same fid used by hf, a dup() of this fid,
  726. *                         or a new fid obtained by reopening the bag file.
  727. *
  728. *               qlBase  - byte offset of first byte in the bag file
  729. *               qlcb    - size in bytes of the data in the bag file
  730. *
  731. *   globals OUT: rcFSError
  732. *
  733. * Notes:        It is possible to read data outside the range specified
  734. *               by *qlBase and *qlcb.  Nothing is guaranteed about what
  735. *               will be found there.
  736. *               If wOption is wLLSameFid or wLLDupFid, and the FS is
  737. *               opened in write mode, this fid will be writable.
  738. *               However, writing is not allowed and may destroy the
  739. *               file system.
  740. *
  741. *               Fids obtained with the options wLLSameFid and wLLDupFid
  742. *               share a file pointer with the hfs.  This file pointer
  743. *               may change after any operation on this FS.
  744. *               The fid obtained with the option wLLSameFid may be closed
  745. *               by FS operations.  If it is, your fid is invalid.
  746. *
  747. *               NULL can be passed for qfid, qlbase, qlcb and this routine
  748. *               will not pass back the information.
  749. *
  750. * Bugs:         wLLDupFid is unimplemented.
  751. *
  752. * Method:       Calls RcLLInfoFromHf().
  753. *
  754. * Notes:        
  755. *
  756. \--------------------------------------------------------------------------*/
  757.  
  758. typedef RC (FAR PASCAL *LPFN_RCLLINFOFROMHFS) (HFS, LPSTR, WORD, WORD FAR *, LONG FAR *, LONG FAR * );
  759.  
  760.  
  761.