home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l038 / 1.img / DOC.PAK / MANUAL.TPW < prev    next >
Encoding:
Text File  |  1991-03-14  |  22.8 KB  |  721 lines

  1. Additions and corrections to Turbo Pascal for Windows manuals:
  2.  
  3.  
  4. ==============
  5.  User's Guide
  6. ==============
  7.  
  8. Chapter 6, The IDE reference
  9. ============================
  10.  
  11.   Glossary is no longer an option on the Help menu.
  12.  
  13.  
  14. ====================
  15.  Programmer's Guide
  16. ====================
  17.  
  18. Chapter 21, Compiler directives
  19. ===============================
  20.  
  21.   The $R directive for including resource files in an application can only be
  22.   used on resource files of 64K or less. To attach larger resource files, such
  23.   as large bitmaps, you need to use the Resource Compiler. For example, to
  24.   attach the large resource file FOOBAR.RES to the application FOOBAR.EXE,
  25.   pull down the Windows Program Manager's File|Run menu, and in the dialog
  26.   box, type the command line
  27.  
  28.     RC FOOBAR.RES
  29.  
  30.   This will attach FOOBAR.RES to FOOBAR.EXE.
  31.  
  32.   Use of the Resource Compiler is described in greater detail in Chapter 18
  33.   of the Windows Programming Guide.
  34.  
  35.  
  36. Chapter 24, Library reference
  37. =============================
  38.  
  39.   The example programs for the following standard procedures and functions
  40.   should include the following uses clause
  41.  
  42.     uses WinCrt;
  43.  
  44.   in order to run correctly:
  45.  
  46.     Append, Assign, BlockRead, ChDir, Close, DiskFree, DiskSize, Eof, Eoln,
  47.     Erase, FileSize, FillChar, FindFirst, GetFAttr, IOResult, Length,
  48.     MemAvail, MkDir, ParamCount, ParamStr, Ptr, Reset, Rewrite, RmDir,
  49.     SetFAttr, SetTextBuf, Val.
  50.  
  51.  
  52. Appendix A, Error messages
  53. ==========================
  54.  
  55.   Run-time errors 104 and 105, "File not open for input" and "File not open
  56.   for output," respectively, will occur in programs that execute Readln or
  57.   Writeln without using the WinCrt unit. Standard input and output files are
  58.   not defined for Windows applications unless WinCrt appears in the uses
  59.   clause.
  60.  
  61.  
  62. ===========================
  63.  Windows Programming Guide
  64. ===========================
  65.  
  66. Chapter 3, Filling in the window
  67. ================================
  68.  
  69.   On page 36, the text that follows the example should read as follows:
  70.  
  71.     The call to WVSPrintF does the type conversion and formatting.
  72.  
  73. Chapter 6, Popping up windows
  74. =============================
  75.  
  76.   On page 73, the assignment to EC1 is missing a parameter and
  77.   should read as follows:
  78.  
  79.     EC1 := New(PEdit, Init(@Self, id_EC1, '', 20, 180, 260, 90, 0, True));
  80.  
  81. Chapter 12, Control objects
  82. ===========================
  83.  
  84. Controls, messages, and parent windows
  85. --------------------------------------
  86.  
  87.   On page 159, the first paragraph, which describes how to keep notification
  88.   messages from being passed to the parent window, is no longer valid. The
  89.   process is actually much simpler. Instead of setting Msg.Result to 1 to
  90.   stop the routing of the message, your object can simply handle the message.
  91.   If it does not explicitly pass the message along to its parent, the parent
  92.   window will not receive the notification.
  93.  
  94.   To pass the message to the parent window, simply call DefNotificationProc,
  95.   which takes care of the routing to the parent window.
  96.  
  97.   Similarly, on page 176, the second paragraph describes notification messages
  98.   for scroll bars. As with the general case just described, the scroll bar's
  99.   parent window will not be notified by default. If you do want the parent
  100.   window to process the message, simply call DefNotificationProc.
  101.  
  102.   The same sort of setup applies to the handling of command messages. If you
  103.   want a parent window to process a command message after your object has
  104.   done some processing, you call DefCommandProc. Like notification messages,
  105.   command messages will not be routed to the parent window by default.
  106.  
  107.  
  108. Controls and the wm_Paint message
  109. ---------------------------------
  110.  
  111.   Most ObjectWindows objects respond to wm_Paint messages by calling their
  112.   Paint methods. Controls, however, are painted somewhat differently. In
  113.   most cases, you won't need to change the appearance of a control. If you
  114.   want to change the color of a particular control or type of control, you
  115.   can have your dialog object respond to wm_CtlColor messages.
  116.  
  117.   If you want to alter the appearance of a control, you have a couple of
  118.   options. Many of the controls can be created with an owner-draw style,
  119.   meaning that Windows sends an extra message, wm_DrawItem, to the parent
  120.   window, which can then draw the appropriate control. If owner-drawing is
  121.   not enough, the best option is probably to define a whole new type of
  122.   control, which draws itself as you want it.
  123.  
  124.   You can also override the WMPaint message-response method, causing it to
  125.   paint the control differently, but this is the least desirable option.
  126.  
  127.  
  128. =========================
  129.  Windows Reference Guide
  130. =========================
  131.  
  132. Chapter 2, Windows function reference
  133. =====================================
  134.  
  135. AllocSelector
  136. -------------
  137.  
  138.   In addition to the text in the manual:
  139.  
  140.   Use of AllocSelector and related functions is not normal Windows
  141.   programming practice. These functions should be avoided if possible.
  142.  
  143.  
  144. ChangeSelector
  145. --------------
  146.  
  147.   Declaration:
  148.     function ChangeSelector(DestSelector, SourceSelector: Word): Word;
  149.  
  150.   Changes the attributes of a selector from code to data or vice
  151.   versa. The value of the selector is not affected. Note that this is
  152.   not normally done, and should only be done if absolutely necessary.
  153.   The converted selector should be used immediately, as there is no way
  154.   to keep the source and destination selectors synchronized.
  155.  
  156.   Parameters:
  157.     DestSelector: The selector that receives the converted selector.
  158.                   Must have been previously allocated with AllocSelector
  159.     SourceSelector: The selector to be converted.
  160.  
  161.   Returns:
  162.     The converted selector, or zero if the conversion failed.
  163.  
  164.  
  165. DefineHandleTable
  166. -----------------
  167.  
  168.   Declaration:
  169.     function DefineHandleTable(Offset: Word): Bool;
  170.  
  171.   Creates a private handle table in the default data segment. The table
  172.   holds the addresses of locked global memory objects, as returned by
  173.   GlobalLock. Windows updates these addresses when running in real mode,
  174.   if the memory objects are moved. Addresses are not updated in protected
  175.   modes (standard and 386-enhanced).
  176.  
  177.   The handle table consists of two Word-type values followed by an array of
  178.   addresses. The first word is the number of entries in the table, which
  179.   must be initialized before the call to DefineHandleTable. The second
  180.   is the number of entries to set to zero when Windows updates its list of
  181.   least-recently-used memory. Either word may be changed at any time. The
  182.   addresses in the rest of the table are returned by GlobalLock.
  183.  
  184.   Parameters:
  185.     Offset: The offset of the table from the beginning of the data
  186.             segment. A value of zero indicates that Windows should no
  187.             longer update the table.
  188.  
  189.   Returns:
  190.     Non-zero if successful; otherwise, zero.
  191.  
  192.  
  193. DOS3Call
  194. --------
  195.  
  196.   Declaration:
  197.     procedure DOS3Call;
  198.  
  199.   Calls the DOS interrupt function 21h. DOS3Call should only be called from
  200.   assembly-language routines, as the registers for the INT 21h call must be
  201.   set up. Under Windows, DOS3Call will work somewhat faster than a direct
  202.   call to the software interrupt.
  203.  
  204.  
  205. FreeSelector
  206. ------------
  207.  
  208.   Declaration:
  209.     function FreeSelector(Selector: Word): Word;
  210.  
  211.   Frees and invalidates a selector allocated by AllocSelector,
  212.   AllocCStoDSAlias, or AllocDStoCSAlias.
  213.  
  214.   Parameters:
  215.     Selector: The selector to free
  216.  
  217.   Returns:
  218.     Zero if successful; otherwise, Selector.
  219.  
  220.  
  221. GetBitmapDimension
  222. ------------------
  223.  
  224.   Returns:
  225.     If the dimensions have not been set (using SetBitmapDimension), the
  226.     return value is zero.
  227.  
  228.  
  229. GetObject
  230. ---------
  231.  
  232.   Parameters:
  233.     Count is the number of bytes to copy into ObjectPtr.
  234.  
  235.  
  236. GetPriorityClipboard
  237. --------------------
  238.  
  239.   Returns:
  240.     In addition to the values described in the manual, returns 0 if there
  241.     is nothing in the Clipboard.
  242.  
  243.  
  244. GetProfileInt
  245. -------------
  246.  
  247.   The function returns a Word-type value, not Integer.
  248.  
  249.  
  250. GetWindowsDirectory
  251. -------------------
  252.  
  253.   There is an error in the entry for GetWindowsDirectory. It is not a
  254.   procedure, but rather a function returning a Word-type value.
  255.  
  256.   Declaration:
  257.     function GetWindowsDirectory(Buffer: PChar; Size: Word): Word;
  258.  
  259.   Returns:
  260.     The length of the string copied into Buffer.
  261.  
  262.  
  263. GlobalDiscard
  264. -------------
  265.  
  266.   Declaration:
  267.     function GlobalDiscard(Mem: THandle): THandle;
  268.  
  269.   Discards the specified global memory block if the block is discardable
  270.   and unlocked.
  271.  
  272.   Parameters:
  273.     Mem: The handle of the global memory block to discard
  274.  
  275.   Returns:
  276.     The handle of the block if successfully discarded, otherwise zero.
  277.  
  278.  
  279. GlobalDosAlloc
  280. --------------
  281.  
  282.   Declaration:
  283.     function GlobalDosAlloc(Bytes: Longint): Longint;
  284.  
  285.   Allocates global memory in the first megabyte of linear address space
  286.   that can be accessed by DOS. Use of this function should be avoided if
  287.   possible, as low memory is a scarce system resource.
  288.  
  289.   Parameters:
  290.     Bytes: The number of bytes to allocate
  291.  
  292.   Returns:
  293.     Zero if memory could not be allocated. Otherwise, the value is a
  294.     paragraph-segment value in the high-order word and a selector in the
  295.     low-order word. In real mode, the paragraph-segment value can be used
  296.     to access the allocated memory. In protected mode, the selector should
  297.     be used.
  298.  
  299.  
  300. GlobalDosFree
  301. -------------
  302.  
  303.   Declaration:
  304.     function GlobalDosFree(Selector: Word): Word;
  305.  
  306.   Frees a block of memory allocated by GlobalDosAlloc.
  307.  
  308.   Parameters:
  309.     Selector: The selector of the memory to free
  310.  
  311.   Returns:
  312.     Zero if successful; otherwise Selector.
  313.  
  314.  
  315. HiByte
  316. ------
  317.  
  318.   Declaration:
  319.     function HiByte(A: Word): Byte;
  320.     inline(
  321.       $5A/       { POP AX    }
  322.       $8A/$C4/   { MOV AL,AH }
  323.       $32/$E4);  { XOR AH,AH }
  324.  
  325.   Extracts the high-order byte from a 16-bit integer value.
  326.  
  327.   Parameters:
  328.     A: The 16-bit integer
  329.  
  330.   Returns:
  331.     The high-order byte
  332.  
  333.  
  334. LoByte
  335. ------
  336.   Declaration:
  337.     function LoByte(A: Word): Byte;
  338.     inline(
  339.       $5A/       { POP AX    }
  340.       $32/$E4);  { XOR AH,AH }
  341.  
  342.   Extracts the low-order byte from a 16-bit integer value.
  343.  
  344.   Parameters:
  345.     A: The 16-bit integer
  346.  
  347.   Returns:
  348.     The low-order byte
  349.  
  350.  
  351. LocalDiscard
  352. ------------
  353.  
  354.   Declaration:
  355.     function LocalDiscard(Mem: THandle): THandle;
  356.  
  357.   Discards the specified local memory block, leaving its handle valid,
  358.   meaning that the handle may be reused by calling LocalReAlloc.
  359.  
  360.   Parameters:
  361.     Mem: The handle of the local memory block
  362.  
  363.   Returns:
  364.     Zero if successful; otherwise Mem.
  365.  
  366.  
  367. NetBIOSCall
  368. -----------
  369.  
  370.   Declaration:
  371.     procedure NetBIOSCall;
  372.  
  373.   Calls the NETBIOS interrupt 5Ch. This call should be used instead of a
  374.   direct call to the 5Ch software interrupt for future compatibility.
  375.  
  376.   NetBIOSCall should only be called from within assembly-language routines,
  377.   as the CPU registers must be set for the interrupt call.
  378.  
  379.  
  380. SetSysColors
  381. ------------
  382.  
  383.   The declaration for SetSysColors has changed slightly, with the last two
  384.   parameters now being untyped var parameters:
  385.  
  386.     procedure SetSysColors(Changes: Integer; var SysColor; var ColorValues);
  387.  
  388.   The descriptions of the parameters in the manual are, however, correct.
  389.  
  390.  
  391. Chapter 4, Windows type reference
  392. =================================
  393.  
  394. Dialog templates
  395. ----------------
  396.  
  397. The Windows API functions CreateDialogIndirect, CreateDialogIndirectParam,
  398. DialogBoxIndirect, and DialogBoxIndirectParam take a pointer to a Windows
  399. data structure called DLGTEMPLATE or TDlgTemplate. This "structure" cannot,
  400. in fact, be defined as a Pascal record, or even as a C structure, because it
  401. has null-terminated string data embedded within it. Dialog templates, then,
  402. should be thought of as blocks of data to be read in a stream, rather than
  403. as data structures per se.
  404.  
  405. A dialog template consists of three parts, only the first of which is
  406. required. First comes the dialog template header, then optional font
  407. information for the dialog, then template information for each of the
  408. items in the dialog box.
  409.  
  410. All dialog templates begin with a dialog template header. The first six
  411. items in it are rigidly defined and named such that they might appear as
  412. a record like this:
  413.  
  414.   type
  415.     DialogTemplateHeader = record
  416.       dtStyle: Longint;
  417.       dtItemCount: Byte;
  418.       dtX, dtY: Integer;
  419.       dtCX, dtCY: Integer;
  420.     end;
  421.  
  422. In essence, the block of dialog template information must contain first a
  423. long integer value defining the style of the dialog box. This value can be
  424. one of, or any combination of, the ds_ Dialog style constants. Next is a
  425. byte that gives the number of items in the dialog box, dtItemCount.
  426.  
  427. Following those numbers are dtX and dtY, the x- and y-coordinates,
  428. respectively, of the upper-left corner of the dialog box. By default, these
  429. coordinates are relative to the origin of the parent window's client area,
  430. but if the dialog's style includes ds_AbsAlign, the coordinates are
  431. relative to the origin of the screen.
  432.  
  433. dtCX and dtCY are, respectively, the width and height of the dialog box.
  434.  
  435. A quick word is in order regarding the units used to define the coordinates
  436. and size of a dialog box. Dialog units are derived from the size of the
  437. current system font. The GetDialogBaseUnits API function returns the base
  438. unit size in pixels. Dialog coordinates and size are then expressed in
  439. fractions of the base unit. Horizontal components (dtX and dtCX) are
  440. expressed in units of 1/4 of the base width unit. Vertical components
  441. (dtY and dtCY) are in units of 1/8 the base height unit.
  442.  
  443. Following the coordinates and size of the dialog box are three null-terminated
  444. strings, called dtMenuName, dtClassName, and dtCaptionText, respectively.
  445. These give the name of the dialog box's menu, the name of the dialog box's
  446. Windows class, and the dialog box's caption.
  447.  
  448. If dtStyle contains the ds_SetFont constant, indicating that a font other
  449. than the current system font is to be used in the dialog, the caption text
  450. string must be followed immediately by two items describing the font: a
  451. short integer number giving the point size of the typeface, then a null-
  452. terminated string giving the name of the typeface. The specifed font must
  453. be available to Windows, either through the initialization file or through
  454. a call to the LoadFont API function.
  455.  
  456. Immediately after the font information (if any) come dialog item templates,
  457. one for each control in the dialog box. The number of items is determined by
  458. the dtItemCount number.
  459.  
  460. Each dialog item template consists of five integers, then a long integer, then
  461. two null-terminated strings, then a byte and (maybe) additional data. The
  462. first four integers are called dtilX, dtilY, dtilCX, and dtilCY. These define
  463. the position and size of the control, relative to the origin of the dialog
  464. box. The units for each of these are the same as the corresponding items
  465. in the dialog template header.
  466.  
  467. Next comes dtilID, an integer which gives the dialog item ID of the control.
  468.  
  469. Following the ID is dtilStyle, a long integer which holds the style of the
  470. dialog-box item.
  471.  
  472. After the style information comes a null-terminated string holding the name
  473. of the control's Windows class, which can be BUTTON, EDIT, STATIC, LISTBOX,
  474. SCROLLBAR, or COMBOBOX.
  475.  
  476. Immediately after the class name is another null-terminated string, dtilText,
  477. which holds the text for the item.
  478.  
  479. After the strings comes a byte called dtilInfo, which tells how many bytes of
  480. additional information follow. A value of zero indicates that there is no
  481. additional information, and therefore terminates the dialog item template.
  482. If dtilInfo is non-zero, the next group of bytes, called dtilData, hold
  483. information that is passed to the CreateWindow function in the CreateParams
  484. field of a TCreateStruct.
  485.  
  486.  
  487. MakePoint
  488. ---------
  489.  
  490.   Declaration:
  491.     MakePoint = TPoint;
  492.  
  493.   MakePoint is used for typecasting long integer numbers into TPoint records.
  494.  
  495.  
  496. TDlgTemplate
  497. ------------
  498.  
  499.   TDlgTemplate is not truly a type, and cannot be represented in Pascal (or
  500.   any other programming language). Windows API calls that require a
  501.   TDlgTemplate "structure" actually take a pointer to a block of information
  502.   which is defined earlier in this file under "Dialog templates."
  503.  
  504.  
  505. TMenuItemTemplate
  506. -----------------
  507.  
  508.   Declaration:
  509.     TMenuItemTemplate = record
  510.       mtOption: Word;
  511.       mtID: Word;
  512.       mtString: PChar;
  513.     end;
  514.  
  515.   The TMenuItemTemplate record holds information for a menu item.
  516.   TMenuItemTemplate records can be strung together to form a list of
  517.   menu items. Combined with a TMenuItemTemplateHeader, this list forms
  518.   a complete menu template.
  519.  
  520.   The mtOption field contains one of (or a combination of) the mf_ Menu flag
  521.   constants, such as mf_Grayed, mf_Popup, and so on. These define the type
  522.   and state of the menu item.
  523.  
  524.   The mtID field holds an ID code for the menu item. Pop-up menu items (those
  525.   that bring up another menu) do not have an mtID field.
  526.  
  527.   The mtString field holds a null-terminated string, specifying the name of
  528.   the menu item.
  529.  
  530.  
  531. TMenuItemTemplateHeader
  532. -----------------------
  533.  
  534.   Declaration:
  535.     TMenuItemTemplateHeader = record
  536.       versionNumber: Word;
  537.       offset: Word;
  538.     end;
  539.  
  540.   The TMenuItemTemplateHeader serves as the header for a menu template. A
  541.   complete menu template consists of a header and an item list. The item list
  542.   is usually a list of TMenuItemTemplate records.
  543.  
  544.   The versionNumber field holds the version number of the menu template. This
  545.   should be zero. The offset field gives the offset (in bytes) of the beginning
  546.   of the item list, relative to the header.
  547.  
  548.  
  549. Chapter 5, ObjectWindows reference
  550. ==================================
  551.  
  552. TDialog object
  553. --------------
  554.  
  555. Methods deleted:
  556.   Destroy
  557.     TDialog.Destroy no longer exists. TDialog uses the inherited Destroy
  558.   method from TWindowsObject.
  559.  
  560.   EnterCancel and EnterOK
  561.     These methods are no longer needed. Instead of generating a command-
  562.   based message when Enter is pressed to activate an OK or Cancel button,
  563.   ObjectWindows will generate a notification message based on the control
  564.   ID of the button "pressed," just as if it had been clicked with the mouse.
  565.  
  566.  
  567. TDlgWindow object
  568. -----------------
  569.  
  570.   The class name of the dialog window's resource (as defined in the Resource
  571.   Compiler script or dialog editor) must match the class name of the
  572.   TDlgWindow object instance. If the class names do not match, the one given
  573.   in the resource template will be used.
  574.  
  575. Methods deleted:
  576.   Cancel and OK are no longer overridden by TDlgWindow. The methods inherited
  577.   from TDialog are used instead.
  578.  
  579. TScroller object
  580. ----------------
  581.  
  582. New field
  583.  
  584. AutoOrg
  585.  
  586.   Declaration:
  587.     AutoOrg: Boolean;
  588.  
  589.   When AutoOrg is True, the origin of the display context (DC)
  590.   passed to the parent window's Paint method is automatically
  591.   adjusted so all calls using that DC reflect the position of the
  592.   scroll bars. This frees you from having to manually adjust the
  593.   coordinates used when painting the window's client area. When
  594.   AutoOrg is False, you must do this mapping manually.
  595.  
  596.   If the scrollable range can exceed 32767, AutoOrg must be set
  597.   to False.
  598.  
  599.   Note that when AutoOrg is True, child windows are automatically
  600.   repositioned based on the scroll bar positions. When AutoOrg is
  601.   False, child windows are not supported.
  602.  
  603.  
  604. TWindow object
  605. --------------
  606.  
  607. New method
  608.  
  609. WMMove
  610.  
  611.   Declaration:
  612.     procedure WMMove(var Msg: TMsg); virtual wm_First + wm_Move;
  613.  
  614.   Updates Attr.X and Attr.Y when the wm_Move message is received, unless the
  615.   window is iconic or zoomed, in which case the message is ignored.
  616.  
  617.  
  618. TWindowsObject object
  619. ---------------------
  620.  
  621. New methods:
  622.  
  623. CreateChildren
  624.  
  625.   Declaration:
  626.     function CreateChildren: Boolean;
  627.  
  628.   Calls Create for all child windows. Called automatically by SetupWindow, so
  629.   you don't normally need to call it directly. CreateChildren need only be
  630.   called after GetChildren, to create visual elements for child window objects
  631.   loaded from a stream.
  632.  
  633.   See also:  TWindowsObject.GetChildren
  634.  
  635.  
  636. WMQueryEndSession
  637.  
  638.   Declaration:
  639.     procedure WMQueryEndSession(var Msg: TMsg);
  640.       virtual wm_First + wm_QueryEndSession
  641.  
  642.   If the window is the application's main window, it responds to the
  643.   wm_QueryEndSession message by calling Application^.CanClose, and if that
  644.   returns True, sets Msg.Result to 1; otherwise, it sets Msg.Result to 0.
  645.  
  646.   See also:  wm_QueryEndSession message
  647.  
  648.  
  649. Changed example:
  650.  
  651. ForEach
  652.  
  653.   The code example at the end of the description of ForEach contains an
  654.   error.  The line
  655.  
  656.     ForEach(@CheckAllBoxes);
  657.  
  658.   should read
  659.  
  660.     ForEach(@CheckTheBox);
  661.  
  662.  
  663. Chapter 6, Global reference
  664. ===========================
  665.  
  666. MemAlloc function             (WObjects unit)
  667. ---------------------------------------------
  668.  
  669.   Declaration:
  670.     function MemAlloc(Size: Word): Pointer;
  671.  
  672.   Function:
  673.     Allocates Size bytes of memory on the heap and returns a pointer to the
  674.     block. If a block of the requested size cannot be allocated, a value of
  675.     nil is returned. As opposed to the New and GetMem standard procedures,
  676.     MemAlloc will not allow the allocation to dip into the safety pool. A
  677.     block allocated by MemAlloc can be disposed using the FreeMem standard
  678.     procedure.
  679.  
  680.   Note:
  681.     MemAlloc was inadvertantly referred to as AllocMem in a couple of
  682.     places in the documentation.
  683.  
  684.  
  685. ===============
  686.  Help Compiler
  687. ===============
  688.   The most up-to-date source code for the HELPEX example is
  689.   contained on disk in the \TPW\DOCDEMOS\HELPEX directory. Note
  690.   that OWLHELP.PAS, an ObjectWindows version of HELPEX, is also
  691.   provided.
  692.  
  693. =============================
  694.  Whitewater Resource Toolkit
  695. =============================
  696.  
  697. Chapter 9, The Header editor
  698. ============================
  699.  
  700.   The Resource Toolkit now supports Turbo Pascal include files as well
  701.   as C-style header files. This information is in the latest help file.
  702.  
  703.   The header file can be either a C-style (.h) file, or a Pascal
  704.   include (.INC) file.
  705.  
  706.   The syntax is restricted whether it is a .h or .INC file.
  707.  
  708.   The Header editor supports only #define (C) or const (Pascal)
  709.   statements that define constants in decimal or hexadecimal format.
  710.   C-style header files may also contain C-style /* */ comments. A
  711.   Pascal include file cannot contain anything else, not even comments.
  712.  
  713.   If you try to open a C-style .h file or a Pascal INC file containing
  714.   anything else, the Header editor will issue an error message and open
  715.   a new, blank .h or .INC file.
  716.  
  717.   When you open a C-style .h file containing comments, the comments are
  718.   ignored when the file is opened. Once you save the .h file with the
  719.   Header editor, all comments are deleted and only the #define
  720.   statements are saved.
  721.