home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / VFP50 / API / PRO_EXT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-01  |  39.7 KB  |  1,268 lines

  1. //+--------------------------------------------------------------------------
  2. //
  3. //    File:        pro_ext.h
  4. //
  5. //    Copyright:    (c) 1996, Microsoft Corporation.
  6. //                All Rights Reserved.
  7. //                Information Contained Herein is Proprietary
  8. //                and Confidential.
  9. //
  10. //    Contents:    API Header for the Library Construction Kit
  11. //
  12. //    Notes: 
  13. //
  14. //---------------------------------------------------------------------------
  15.  
  16. #if defined(_MSC_VER)
  17. #pragma pack(push, 1)                 // Assume byte structure packing
  18. #endif
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {                        // Assume C declarations for C++
  22. #endif
  23.  
  24. #ifndef PRO_EXT_INCLUDED
  25. #define PRO_EXT_INCLUDED
  26.  
  27. //
  28. // Detect the enviroment we are building:
  29. //
  30.  
  31. #if defined(__MWERKS__)
  32. //
  33. // MetroWerks CodeWarrior
  34. //
  35. #ifndef MAC_OS
  36.     #define MAC_API 1
  37.     #include <windows.h>
  38. #endif
  39.  
  40.     #pragma align=mac68k
  41.     
  42. #elif defined(__SC__)
  43. //
  44. // Symantic C++
  45. //
  46. #ifndef MAC_OS
  47.     #define MAC_API 1
  48.     #include <windows.h>
  49. #endif
  50.  
  51.     #pragma SC align 1
  52.     
  53.     #undef _HLock
  54.     #undef _NewMenu
  55.     
  56. #elif defined(_MSC_VER) && (defined(_M_M68K) || defined(_M_MPPC))
  57. //
  58. // Microsoft Visual C++
  59. //
  60.  
  61. #ifndef MAC_OS
  62.     #define MAC_API 1
  63.     
  64.     #if defined(_M_M68K) || defined(_M_MPPC)
  65.         #pragma pack(push, pro_ext1)
  66.         #include <macos\windows.h>
  67.         #pragma pack(pop, pro_ext1)
  68.     #endif
  69. #endif
  70.  
  71. #elif defined(macintosh) || defined(powerc) || defined(applec)
  72. //
  73. // Apple's MPW
  74. //
  75. #ifndef MAC_OS
  76.     #define MAC_API 1
  77.     #include <windows.h>
  78. #endif
  79.  
  80.     #undef _HLock
  81.     #undef _NewMenu
  82.  
  83. #else
  84.  
  85.     #define MAC_API 0
  86.     
  87. #endif
  88.  
  89. //
  90. //    Semi-portable way to deal with 'far' pointers 
  91. //
  92.  
  93. #ifndef FAR
  94.     #if !defined(_WIN32)
  95.         #define FAR
  96.     #endif
  97. #endif  // FAR
  98.  
  99. //
  100. // Global Defines:
  101. //
  102.  
  103. #ifndef GLOBAL_INCLUDED
  104.  
  105. #if defined(_WIN32)
  106.  
  107.     #if !defined(_MT) || !defined(_DLL) 
  108.         #error The /MD or /MDd compiler switch (Multithreaded Using DLL) is required.
  109.     #endif
  110.  
  111.  
  112. //
  113. // Microsoft C for Windows
  114. //
  115.     #pragma pack(push, pro_ext2)
  116.  
  117.     #include <windows.h>
  118.  
  119.     #pragma pack(pop, pro_ext2)
  120.  
  121.     #define _far
  122.     #define __far
  123.  
  124.  
  125.     // Fastcall calling convention
  126.     #define FASTCALL _fastcall
  127.  
  128. #else    //_WIN32
  129.  
  130.     #define FASTCALL
  131.  
  132. #endif
  133.  
  134. typedef unsigned MHANDLE;               // A memory handle.
  135. typedef long         NTI;                    // A name table index.
  136. typedef unsigned __int64 Ticks;            // A timer tick count.
  137. #define TRUE    1
  138. #define FALSE    0
  139. #define YES        1
  140. #define NO        0
  141. typedef char TEXT;
  142.  
  143. #if defined(_WIN32)
  144. #undef MAX_PATH            
  145. #define MAX_PATH 261    
  146.  
  147. #define MAXFILENAME        MAX_PATH        /* longest pathname */
  148. #elif MAC_API || MAC_OS
  149. #define MAXFILENAME     261             /* longest pathname */
  150. #else
  151. #define MAXFILENAME        130                /* longest pathname */
  152. #endif
  153.  
  154. #endif      // GLOBAL_INCLUDED
  155.  
  156. typedef unsigned long WHandle;            // A Window Handle
  157. typedef long MENUID;                    // A Menu id.
  158. typedef long MenuId;                    // A Menu id.
  159. typedef long ITEMID;                    // An item id.
  160. typedef long ItemId;                    // An item id.
  161.  
  162. typedef int         FCHAN;                    // A file I/O channel.
  163. #define SCHEMEWIDTH        11
  164. typedef char Scheme[SCHEMEWIDTH];        // A FoxPro color scheme
  165.  
  166.  
  167. #ifdef GLOBAL_INCLUDED
  168.  
  169. #define WHANDLE WHandle
  170.  
  171. #else
  172.  
  173. typedef WHandle WHANDLE;                // Users can use WHANDLE
  174.  
  175. #endif
  176.  
  177. //
  178. // FoxWindow Defines:
  179. //
  180.  
  181. #ifndef FOXWIND_INCLUDED
  182.  
  183. // _WOpen() flag values:
  184. #define WCURSOR        (1<<1)                /* Enable the cursor                        */
  185. #define ZOOM        (1<<2)                /* Permit the window to be zoomed            */
  186. #define ADJ            (1<<3)                /* Allow Window Size to be Adjusted            */
  187. #define CLOSE        (1<<4)                /* Permit Closing of System Window            */
  188. #define MOVE        (1<<5)                /* Allow the window to be moved                */
  189. #define HSCROLLBAR    (1<<6)                /* Show Horizontal Scrollbars                */
  190. #define VSCROLLBAR    (1<<7)                /* Show Vertical Scrollbars                    */
  191. #define AUTOSCROLL    (1<<8)                /* Window should Auto scroll                */
  192. #define WEVENT        (1<<10)             /* Participates in activate/deact events    */
  193. #define SHADOW        (1<<11)             /* Window will produce a shadow                */
  194. #define WMODAL        (1<<12)             /* Window is a modal window                    */
  195. #define WMINIMIZE    (1<<13)             /* Window can be minimized                    */
  196.  
  197. #endif      // FOXWIND_INCLUDED
  198.  
  199. //
  200. // FoxEvent Defines:
  201. //
  202.  
  203. #ifndef FOXEVENT_INCLUDED
  204.  
  205. //  _FindWindow() return values.
  206. #define inBorder         0                /* In the window border region            */
  207. #define inHelp             1                /* In the Help region                    */
  208. #define inContent         2                /* In the content/text region            */
  209. #define inDrag             3                /* In the Drag/Title bar region            */
  210. #define inGrow             4                /* In the grow/resize region            */
  211. #define inGoAway         5                /* In the goAway/close region            */
  212. #define inZoom             6                /* In the zoom region                    */
  213. #define inVUpArrow         7                /* In the vertical up arrow region        */
  214. #define inVDownArrow     8                /* In the vertical down arrow region    */
  215. #define inVPageUp         9                /* In the vertical page up region        */
  216. #define inVPageDown        10                /* In the vertical page down region        */
  217. #define inVThumb        11                /* In the vertical thumb region            */
  218. #define inHUpArrow        12                /* In the horizontal up arrow region    */
  219. #define inHDownArrow    13                /* In the horizontal down arrow region    */
  220. #define inHPageUp        14                /* In the horizontal page up region        */
  221. #define inHPageDown        15                /* In the horizontal page down region    */
  222. #define inHThumb        16                /* In the horizontal thumb region        */
  223. #define inMenuBar        17                /* In the menu bar                        */
  224.  
  225.  
  226. // EventRec.what values
  227. #define nullEvent                0        /* Null                            */
  228. #define activateEvent            1        /* Activate window                */
  229. #define deactivateEvent            2        /* Deactivate window            */
  230. #define showEvent                  3        /* Show window                    */
  231. #define hideEvent                4        /* Hide window                    */
  232. #define updateEvent                5        /* Redraw window                */
  233. #define sizeEvent                   6        /* Size window event            */
  234. #define moveEvent                   7        /* Move window event            */
  235. #define closeEvent                8        /* Close window                    */
  236. #define mouseDownEvent            9        /* Left mouse down                */
  237. #define mouseUpEvent           10        /* Left mouse up                */
  238. #define mMouseDownEvent           11        /* Middle mouse down event        */
  239. #define mMouseUpEvent           12        /* Middle mouse up event        */
  240. #define rMouseDownEvent           13        /* Right mouse down event        */
  241. #define rMouseUpEvent           14        /* Right mouse up event            */
  242. #define mouseMoveEvent           15        /* Mouse move event                */
  243. #define mouseWheelEvent           16        /* Mouse wheel event            */
  244. #define keyDownEvent           17        /* Key down                        */
  245. #define hotkeyEvent               18        /* An ON KEY LABEL was pressed    */
  246. #define menuInitEvent           19        /* Menu initialization event    */
  247. #define menuUpdateEvent           20        /* Menu update required            */
  248. #define menuHitEvent           21        /* Menu hit                        */
  249. #define toolbarEvent           22        /* Toolbar button hit            */
  250. #define alarmEvent               25        /* Alarm/Timer event            */
  251.  
  252. #if defined(__WINDOWS__) || defined(_WINDLL) || MAC_API || MAC_OS
  253. #define zoomEvent              999        /* Not supported in Windows/Mac    */
  254. #else
  255. #define zoomEvent               13        /* Zoom window event (DOS)        */
  256. #endif
  257.  
  258. // EventRec.modifiers defines
  259. #define charCodeMask    0x0fff            /* Character code mask            */
  260. #define shiftCodeMask    0xf000            /* Shift key mask                */
  261.  
  262. #define shiftKey        0x1000            /* Either shift key       1 - down */
  263. #define ctrlKey            0x2000            /* Control key           1 - down */
  264. #define altKey            0x4000            /* Alternate key       1 - down */
  265. #define literalKey        0x8000            /* This key is interpreted literally */
  266.  
  267.  
  268. // EventRec.mbState code defines
  269. #define leftButton        (1<<0)            /* Left button status    1 - down */
  270. #define rightButton        (1<<1)            /* Right button status    1 - down */
  271. #define centerButton    (1<<2)            /* Center button status 1 - down */
  272.  
  273.  
  274. // EventRec.mcState code defines
  275. #define posChange        (1<<0)            /* Position change          1 - change   */
  276. #define leftPressed        (1<<1)            /* Left button pressed      1 - pressed  */
  277. #define leftReleased    (1<<2)            /* Left button released      1 - released */
  278. #define rightPressed    (1<<3)            /* Right button pressed      1 - pressed  */
  279. #define rightReleased    (1<<4)            /* Right button released  1 - released */
  280. #define centerPressed    (1<<5)            /* Center button pressed  1 - pressed  */
  281. #define centerReleased    (1<<6)            /* Center button released 1 - released */
  282.  
  283. #endif      // FOXEVENT_INCLUDED
  284.  
  285.  
  286. // Flag values for _InKey()
  287. #define SHOWCURSOR        (1<<0)
  288. #define HIDECURSOR        (1<<1)
  289. #define MOUSEACTIVE        (1<<2)
  290.  
  291. // Flag values for the _ALen() function
  292. enum {
  293.     AL_ELEMENTS,
  294.     AL_SUBSCRIPT1,
  295.     AL_SUBSCRIPT2
  296. };
  297.  
  298. // FPFI is a 32 bit pointer to a function returning an int
  299. typedef long (FAR *FPFI)();
  300.  
  301. #ifndef GLOBAL_INCLUDED
  302.  
  303. #if defined(_WIN32)
  304. typedef struct
  305. {
  306.     LONG h;
  307.     LONG v;
  308. } FoxPoint;
  309.  
  310. #define FoxRect RECT
  311.  
  312. #elif MAC_API || MAC_OS       // end of WIN32
  313.  
  314. typedef short SHORT;
  315. typedef long  LONG;
  316. typedef unsigned long ULONG;
  317. typedef int BOOL;
  318. typedef    unsigned short USHORT;
  319. typedef Point FoxPoint;
  320.  
  321. typedef struct
  322. {
  323.     SHORT top;
  324.     SHORT left;
  325.     SHORT bottom;
  326.     SHORT right;
  327. } FoxRect;
  328.  
  329. #endif          // end of MAC_OS || MAC_API
  330. #endif          // GLOBAL_INCLUDED
  331.  
  332. #if defined(_WIN32)
  333. #define Point FoxPoint
  334. #define Rect FoxRect
  335. #endif
  336.  
  337. #ifndef FOXMENU_INCLUDED
  338.  
  339. // Menu structure type entry definitions used by _NewMenu()
  340. #define MPOPUP            1                /* Menu is a POPUP type menu    */
  341. #define MPAD            2                /* Menu is a PAD type menu        */
  342. #define MBAR            3                /* Menu is a BAR type menu        */
  343.  
  344. #endif      // FOXMENU_INCLUDED
  345.  
  346.  
  347. // These are the API identifiers for the System Menu Constants.
  348. enum {
  349.     _LASTITEM = -2, _FIRSTITEM,
  350.  
  351.     _SYSMENU,
  352.     _SYSMSYSTEM, _SYSMFILE, _SYSMEDIT, _SYSMDATA, _SYSMRECORD, _SYSMPROG,
  353.     _SYSMWINDOW, _SYSMVIEW, _SYSMTOOLS, _SYSMFORMAT,
  354.  
  355.     _SYSTEM,
  356.     _SYSTEMABOUT, _SYSTEMHELP, _SYSTEMMACRO, _SYSTEMSEP100, _SYSTEMFILER,
  357.     _SYSTEMCALC, _SYSTEMDIARY, _SYSTEMSPECIAL, _SYSTEMASCII,
  358.     _SYSTEMCAPTURE, _SYSTEMPUZZLE, _SYSTEMTECHSUPPORT, _SYSTEMOFFICE, _SYSTEMSEP200, 
  359.     _SYSTEMSEP300, _SYSTEMHELPSRCH, _SYSTEMHELPHOWTO, _SYSTEMDBASE,
  360.  
  361.     _FILE,
  362.     _FILENEW, _FILEOPEN, _FILECLOSE, _FILECLOSEALL, _FILESEP100, _FILESAVE,
  363.     _FILESAVEAS, _FILEREVERT, _FILESEP200, _FILESETUP, _FILEPRINT, _FILEOSPRINT, 
  364.     _FILEPRINTONECOPY, _FILESEP300,    _FILEQUIT, _FILEPRINTPREVIEW, _FILEPAGESETUP,
  365.     _FILEIMPORT, _FILEEXPORT, _FILESEP400, _FILESEND,
  366.  
  367.     _EDIT,
  368.     _EDITUNDO, _EDITREDO, _EDITSEP100, _EDITCUT, _EDITCOPY, _EDITPASTE,
  369.     _EDITCLEAR, _EDITSEP200, _EDITSELECTALL, _EDITSEP300, _EDITGOTO,
  370.     _EDITFIND, _EDITFINDAGAIN, _EDITREPLACE, _EDITREPLACEALL, _EDITSEP400, 
  371. #if 0
  372.     _EDITBUILDEXPR,    _EDITEXECUTEBLOCK, _EDITSEP600, 
  373. #endif
  374.     _EDITPREF,
  375.  
  376.     _DATA,
  377.     _DATASETUP, _DATABROWSE, _DATASEP100, _DATAAPPEND, _DATACOPY, _DATASORT,
  378.     _DATATOTAL, _DATASEP200, _DATAAVERAGE, _DATACOUNT, _DATASUM, _DATACALCULATE,
  379.     _DATAREPORT, _DATALABEL, _DATASEP300, _DATAPACK, _DATAREINDEX,
  380.  
  381.     _RECORD,
  382.     _RECORDAPPEND, _RECORDCHANGE, _RECORDSEP100, _RECORDGOTO, _RECORDLOCATE,
  383.     _RECORDCONTINUE, _RECORDSEEK, _RECORDSEP200, _RECORDREPLACE, _RECORDDELETE,
  384.     _RECORDRECALL,
  385.  
  386.     _PROG,
  387.     _PROGDO, _PROGSEP100, _PROGCANCEL, _PROGRESUME, _PROGSEP200,
  388.     _PROGCOMPILE, _PROGGENERATE, _PROGDOCUMENT, _PROGGRAPH, _PROGSUSPEND,
  389.     _PROGFORMWIZARD,
  390.  
  391.     _WINDOW,
  392.     _WINDOWHIDE, _WINDOWHIDEALL, _WINDOWSHOWALL, _WINDOWCLEAR, _WINDOWSEP100,
  393.     _WINDOWMOVE, _WINDOWSIZE, _WINDOWZOOM, _WINDOWMINMAX, _WINDOWROTATE,
  394.     _WINDOWCOLOR, _WINDOWSEP200, _WINDOWCOMMAND, _WINDOWDEBUG, _WINDOWTRACE,
  395.     _WINDOWVIEW, _WINDOWARRANGEALL, _WINDOWTOOLBARS,
  396.  
  397.     _VIEW,
  398.  
  399.     _TOOLS,
  400.     _TOOLSWIZARDS, _TOOLSFILLER1, _TOOLSFILLER2, _TOOLSFILLER3, _TOOLSOPTIONS,
  401.     _TOOLSDEBUGGER, _TOOLSTRACE, _TOOLSWATCH, _TOOLSLOCALS, _TOOLSDBGOUT,
  402.     _TOOLSSTACK, _TOOLSFILLER4,
  403.  
  404.     _REPORT, _LABEL, 
  405.  
  406.     _BROWSE, _BROWSEMODE, _BROWSEGRID, _BROWSELINK, _BROWSECHPART,
  407.     _BROWSEFILLER1, _BROWSEFONT, _BROWSESFIELD, _BROWSEMFIELD, _BROWSEMPART,
  408.     _BROWSEFILLER2, _BROWSEGOTO, _BROWSESEEK, _BROWSEDELREC, _BROWSEAPPEND,    
  409.  
  410.     _MACRO, _DIARY, _DAFILER, _SCREEN,
  411.     
  412.     _MBLDR, 
  413.     _MBLDRGLOBAL, _MBLDRMENUOPT, _MBLDRFILLER1, _MBLDRTRYIT, _MBLDRFILLER2,
  414.      _MBLDRINSERT, _MBLDRDELETE, _MBLDRFILLER3, _MBLDRQUICK, _MBLDRGENERATE,
  415.  
  416.     _PROJECT, _RQBE,
  417.  
  418.     _EDITPASTELINK, _EDITLINK,
  419.     _EDITINSERTOBJ,    _EDITCVTSTATIC, _EDITSEP500,  _PROGSEP300,
  420.  
  421.     _TEXT,
  422.     _TEXTSPELL,
  423.  
  424.     _WIZARDLIST,
  425.     _WIZARDTABLE, _WIZARDQUERY, _WIZARDFORM, _WIZARDREPRT, _WIZARDLABEL,
  426.     _WIZARDMAIL, _WIZARDPIVOT, _WIZARDIMPORT, _WIZARDFOXDOC, _WIZARDSETUP, 
  427.     _WIZARDUPSIZING, _WIZARDALL,
  428.  
  429.     _TABLE, 
  430.     _TABLEPROPERTIES, _TABLEFILLER1, _TABLEGOTO, _TABLEAPPEND,
  431.     _TABLEDELREC, _TABLEFILLER2, _TABLEDELETE, _TABLERECALL, _TABLESFIELD,
  432.     _TABLEMFIELD, _TABLEMPART, _TABLEFILLER3, _TABLELINK, _TABLECHPART, _TABLEFILLER4,
  433.  
  434.     _EDITOBJECT, _PROGBEAUT, _SYSTEMDOCUMENTATION, _SYSTEMSAMPLEAPPS,
  435.     _MBLDRINSERTBAR, _EDITBEAUTIFY,
  436.     _TOOLSBROWSER, _WEBMENU, _HELPWEBVFPFREESTUFF,_HELPWEBVFPHOMEPAGE, _HELPWEBVFPFAQ,
  437.     _HELPWEBVFPONLINESUPPORT, _HELPWEBFILLER1, _HELPWEBDEVONLY, _HELPWEBVFPSENDFEEDBACK, _HELPWEBDIRECTORY,
  438.     _HELPWEBSEARCH, _HELPWEBTUTORIAL, _HELPWEBFILLER2, _HELPWEBMSFTHOMEPAGE
  439. };
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446. #if defined(_WIN32)
  447. #define _BreakPoint() __asm     \
  448. {                                \
  449.      int 3h                     \
  450. }
  451. #elif MAC_API || MAC_OS
  452. #define _BreakPoint() Debugger();
  453. #endif  // _WIN32
  454.  
  455.  
  456. // Alternate values for parmCount to modify how FoxPro treats the function
  457. #define INTERNAL        -1        /* Not callable from FoxPro                */
  458. #define CALLONLOAD        -2        /* Call when library is loaded            */
  459. #define CALLONUNLOAD    -3        /* Call when library is unloaded        */
  460.  
  461.  
  462. // The FoxInfo structure contains the descriptions of the functions
  463. // contained in the library.
  464. typedef struct {
  465.     char FAR *    funcName;        /* Function name (all caps)                */
  466.     FPFI        function;       /* Actual function address              */
  467.     short        parmCount;        /* # parameters specified or a flag value */
  468.     char FAR *    parmTypes;        /* Parameter list description            */
  469. } FoxInfo;
  470.  
  471. typedef struct _FoxTable {
  472.     struct _FoxTable FAR *nextLibrary;    /* Linked list of libraries        */
  473.     short infoCount;            /* # of functions in this library        */
  474.     FoxInfo FAR *infoPtr;        /* Function list                        */
  475. } FoxTable;
  476.  
  477.  
  478.  
  479. #if MAC_API
  480. typedef struct _LARGE_INTEGER {
  481.     unsigned long LowPart;
  482.     long  HighPart;
  483. } LARGE_INTEGER, *PLARGE_INTEGER;
  484. #endif
  485.  
  486. typedef LARGE_INTEGER CCY;
  487.  
  488. // An expression's value
  489. typedef struct {
  490.     char                ev_type;
  491.     char                ev_padding;
  492.     short                ev_width;
  493.     unsigned             ev_length;
  494.     long                ev_long;
  495.     double                ev_real;
  496.     CCY                    ev_currency;
  497.     MHANDLE                ev_handle;
  498.     unsigned long        ev_object;
  499. } Value;
  500.  
  501. // A reference to a database or memory variable
  502. typedef struct {
  503.     char        l_type;
  504.     short        l_where,        /* Database number or -1 for memory        */
  505.                 l_NTI,            /* Variable name table offset            */
  506.                 l_offset,        /* Index into database                    */
  507.                 l_subs,            /* # subscripts specified 0 <= x <= 2    */
  508.                 l_sub1, l_sub2; /* subscript integral values            */
  509. } Locator;
  510.  
  511. // A parameter to a library function.
  512. typedef union {
  513.     Value        val;
  514.     Locator        loc;            /* An 'R' in l_type means the Locator    */
  515.                                 /* part of this union is in use.        */
  516. } Parameter;
  517.  
  518. // A paramter list to a library function.
  519. typedef struct {
  520.     short         pCount;            /* Number of Parameters PASSED.            */
  521.     Parameter    p[1];            /* pCount Parameters.                    */
  522. } ParamBlk;
  523.  
  524. #if MAC_API || MAC_OS
  525. typedef WindowPtr HWND;
  526. #endif  // MAC_OS
  527.  
  528. #if MAC_API || MAC_OS
  529. #ifndef __WINDOWS__
  530. #ifndef __QUICKDRAW__
  531. typedef char *    WindowPtr;
  532. #endif
  533. #endif
  534. #endif
  535.  
  536. #if defined(_WIN32)
  537. HANDLE _GetAPIHandle(void);
  538. #endif
  539.  
  540. typedef long EDPOS;                    /* Editor text offset                    */
  541. typedef long EDLINE;                /* Editor line number                    */
  542.  
  543. #define MAXFONTNAME        64            /* Max length of a font name            */
  544.  
  545. #ifndef EDITOR_INCLUDED
  546.  
  547. #define EDCOMMAND        0
  548. #define EDSCRIP            EDCOMMAND
  549. #define EDPROGRAM        1
  550. #define EDFILE            2
  551. #define EDMEMO            3
  552. #define EDQUERY            6
  553. #define EDSCREEN        7
  554. #define EDMENU            8
  555. #define EDVIEW            9
  556. #define EDSNIP           10
  557. #define EDTEXT           11
  558. #define EDPROC           12
  559. #define EDPROJTEXT     13
  560.  
  561. #define RO_BYFILE        (0x01)        /* readOnly bits                        */
  562. #define RO_BYUSER        (0x02)
  563. #define RO_BYRECORD        (0x04)
  564.  
  565. #endif      // EDITOR_INCLUDED
  566.  
  567.  
  568. // An editor's environment.
  569. typedef struct{
  570.     char             filename[MAXFILENAME];
  571.     EDPOS            length;            /* #bytes in text                            */
  572.     unsigned short    lenLimit;        /* Max allowable length. 0 = infinite.        */
  573.     unsigned short    dirty,            /* Has the file been changed?                */
  574.                     autoIndent,        /* Auto indent?                                */
  575.                     backup,            /* Make backup files?                        */
  576.                     addLineFeeds,     /* add line feeds when saving?                */
  577.                     autoCompile,    /* Shall we auto compile this thing?        */
  578.                     addCtrlZ,        /* add end of file ctrl-z?                    */
  579.                     savePrefs,        /* save edit preferences?                    */
  580.                     dragAndDrop,    /* Allow drag-and-drop                        */
  581.                     readOnly,        /* RO_BYFILE, RO_BYUSER, RO_BYRECORD        */
  582.                     syntaxColor,    /* Syntax coloring in effect for this file? */
  583.                     status,            /* display status bar?                        */
  584.                     lockPrefs,        /* Can update the preferences ?                */
  585.                     insertMode;
  586.     short            wrap;            /* if <0, new line at Return only            */
  587.  
  588.     EDPOS            selStart;        /* Selection start                            */
  589.     EDPOS            selEnd;            /* Selection end                            */
  590.     EDPOS            selAnchor;        /* Selection anchor point                    */
  591.     short            justMode;        /* Justification                            */
  592.     short            tabWidth;        /* TAB size in spaces                        */
  593.  
  594.     char              fontName[MAXFONTNAME];
  595.     short            fontSize;
  596.     short            fontStyle;
  597.     short            kind;            /* Kind of editor session                    */
  598. } EDENV;
  599.  
  600. // Event record definitions
  601. typedef struct
  602. {    unsigned short        what;            /* Event code                    */
  603.     Ticks                when;            /* Ticks since startup            */
  604.     FoxPoint            where;            /* Mouse location                */
  605.     unsigned long        message;        /* Key/window                    */
  606.     unsigned long        misc;            /* Event dependant misc info    */
  607.     unsigned long        misc2;            /* Event dependant misc info    */
  608.     unsigned char        mbState;        /* Mouse buttons state            */
  609.     unsigned char        mcState;        /* Mouse cond activate state    */
  610.     unsigned long        modifiers;
  611. } EventRec;
  612.  
  613.  
  614. // Flags for the _DBStatus function
  615. #define DB_BOF            1        /* BOF()                                */
  616. #define DB_EOF            2        /* EOF()                                */
  617. #define DB_RLOCKED        4        /* Current record is RLOCKed            */
  618. #define DB_FLOCKED        8        /* Database is FLOCKed                    */
  619. #define DB_EXCLUSIVE    16        /* Database is open EXCLUSIVEly            */
  620. #define DB_READONLY        32        /* Database is READONLY                    */
  621.  
  622. // Flag values for _DBLock()
  623. #define DBL_RECORD        0
  624. #define DBL_FILE        1
  625.  
  626. // Flag values for the _NewVar function
  627. #define NV_PUBLIC        0
  628. #define NV_PRIVATE        1
  629.  
  630. // Mode flag values for the __FIO function
  631. #define FIO_FGETS        0
  632. #define FIO_FREAD        1
  633. #define FIO_FPUTS        2
  634. #define FIO_FWRITE        3
  635.  
  636. // Mode flag values for the _FOpen function
  637. #define FO_READONLY        0
  638. #define FO_WRITEONLY    1
  639. #define FO_READWRITE    2
  640.  
  641. // Mode flag values for the _FCreate function
  642. #define FC_NORMAL        0
  643. #define FC_READONLY        1
  644. #define FC_HIDDEN        2
  645. #define FC_SYSTEM        4
  646. #define FC_TEMPORARY    128
  647.  
  648. // Mode flag values for the _FSeek function
  649. #define FS_FROMBOF        0        /* From beginning of file        */
  650. #define FS_RELATIVE        1        /* From current position        */
  651. #define FS_FROMEOF        2        /* From end of file                */
  652.  
  653. // Mode flag values for the __WStat function
  654. #define WS_TOP            0
  655. #define WS_BOTTOM        1
  656. #define WS_LEFT            2
  657. #define WS_RIGHT        3
  658. #define WS_HEIGHT        4
  659. #define WS_WIDTH        5
  660. #define WS_SETPORT        7
  661.  
  662. // Mode flag values for the __WControl function
  663. #define WC_CLEAR        0
  664. #define WC_CLOSE        1
  665. #define WC_HIDE            2
  666. #define WC_SHOW            3
  667. #define WC_SELECT        4
  668. #define WC_SENDBEHIND    5
  669.  
  670. // Mode flag values for the __WAdjust function
  671. #define WA_MOVE            0
  672. #define WA_SIZE            1
  673. #define WA_POSCURSOR    2
  674.  
  675. // Mode flag value for the __WPort function
  676. #define WP_ONTOP        0
  677. #define WP_OUTPUT        1
  678.  
  679. // Mode flag value for the _WZoom function
  680. #define WZ_MAXIMIZED    0
  681. #define WZ_NORMAL        1
  682. #define WZ_MINIMIZED    2
  683.  
  684. // Border strings for typical window borders.
  685. #define WO_DOUBLEBOX    "\x0cd\x0cd\x0ba\x0ba\x0c9\x0bb\x0c8\x0bc\x0cd\x0cd\x0ba\x0ba\x0c9\x0bb\x0c8\x0bc"
  686. #define WO_SINGLEBOX    "\x0c4\x0c4\x0b3\x0b3\x0da\x0bf\x0c0\x0d9\x0c4\x0c4\x0b3\x0b3\x0da\x0bf\x0c0\x0d9"
  687. #define WO_PANELBORDER    "\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db\x0db"
  688. #define WO_SYSTEMBORDER "\x020\x020\x020\x020\x0fe\x0f0\x020\x0f9\x020\x020\x020\x020\x020\x020\x020\x020"
  689.  
  690. #ifndef FOXWIND_INCLUDED
  691.  
  692. // Border string offsets.
  693. #define selectBorder        0
  694. #define deselectBorder        8
  695.  
  696. #define topEdge                0
  697. #define bottomEdge            1
  698. #define leftEdge            2
  699. #define rightEdge            3
  700. #define topLeftCorner        4
  701. #define topRightCorner        5
  702. #define bottomLeftCorner    6
  703. #define bottomRightCorner    7
  704. #define maxBorderLen       17    /* Border string length (maximum)           */
  705.  
  706. #endif      // FOXWIND_INCLUDED
  707.  
  708.  
  709. #ifndef COLORS_INCLUDED
  710.  
  711. #define BLACK_ON     0x00   /* Foreground color attributes           */
  712. #define BLUE_ON        0x01
  713. #define GREEN_ON    0x02
  714. #define CYAN_ON        0x03
  715. #define    RED_ON        0x04
  716. #define MAGENTA_ON    0x05
  717. #define BROWN_ON    0x06
  718. #define WHITE_ON    0x07
  719.  
  720. #define BLACK    (BLACK_ON << 4)    /* Background color attributes.           */
  721. #define BLUE    (BLUE_ON << 4)
  722. #define GREEN    (GREEN_ON << 4)
  723. #define CYAN    (CYAN_ON << 4)
  724. #define RED        (RED_ON << 4)
  725. #define MAGENTA (MAGENTA_ON << 4)
  726. #define BROWN    (BROWN_ON << 4)
  727. #define WHITE    (WHITE_ON << 4)
  728.  
  729. #define BRIGHT    0x08        /* Intensify foreground color            */
  730. #define BLINK    0x80        /* Blink this                    */
  731.  
  732.  
  733. // The following values are used in the WA_ISSHADOW column of the
  734. // schemes to indicate whether the window casts a shadow.
  735.  
  736. #define CASTSSHADOW (BRIGHT | BLACK_ON | BLACK)
  737. #define CASTSNOSHADOW (BRIGHT | WHITE_ON | WHITE | BLINK)
  738.  
  739.  
  740. // Color scheme numbers for use by _WOpen and others
  741. enum
  742. {
  743.     USER_SCHEME,
  744.     USERMENU_SCHEME,
  745.     MBAR_SCHEME,
  746.     POPUP_SCHEME,
  747.     DIALOG_SCHEME,
  748.     MODAL_POPUP_SCHEME,
  749.     ALERT_SCHEME,
  750.     WINDOW_SCHEME,
  751.     NONMODAL_POPUP_SCHEME,
  752.     BROWSE_SCHEME,
  753.     REPORT_SCHEME,
  754.     ALERT_POPUP_SCHEME
  755. };
  756.  
  757. // Color index numbers used by _WSetAttr() and _WAttr()
  758. enum
  759. {
  760.     WA_PENCOLOR = -1,    /* CURRENT PEN COLOR                            */
  761.  
  762.     WA_NORMAL,            /* normal text                                    */
  763.     WA_ENHANCED,        /* enhanced text                                */
  764.     WA_BORDER,            /* window border                                */
  765.     WA_FOREMOST,        /* title when foremost                            */
  766.     WA_TITLE,            /* title otherwise                                */
  767.     WA_SELECTED,        /* selected text                                */
  768.     WA_HOTKEY,            /* control hotkeys                                */
  769.     WA_SHADOW,            /* color of shadows that fall on this window.    */
  770.     WA_ENABLED,            /* enabled control                                */
  771.     WA_DISABLED,        /* disabled control                                */
  772.     WA_ISSHADOW            /* window casts a shad                            */
  773. };
  774.  
  775.  
  776. #endif      // COLORS_INCLUDED
  777.  
  778.  
  779. //
  780. // Prototypes for the API Functions
  781. //
  782.  
  783. // Streaming output routines:
  784. void FASTCALL _PutChr(int character);
  785. void FASTCALL _PutStr(char FAR *string);
  786. void FASTCALL _PutValue(Value FAR *val);
  787.  
  788. // Memory management functions:
  789. MHANDLE FASTCALL _AllocHand(ULONG size);
  790. void FASTCALL _FreeHand(MHANDLE h);
  791. void FAR * FASTCALL _HandToPtr(MHANDLE h);
  792. void FASTCALL _HLock(MHANDLE h);
  793. void FASTCALL _HUnLock(MHANDLE h);
  794. ULONG FASTCALL _GetHandSize(MHANDLE h);
  795. USHORT FASTCALL _SetHandSize(MHANDLE h, ULONG size);
  796. BOOL FASTCALL _MemAvail(ULONG bytes);
  797.  
  798. // String handling functions:
  799. int     FASTCALL _StrLen(char FAR *string);
  800. void FASTCALL _StrCpy(char FAR *dest, char FAR *src);
  801. int     FASTCALL _StrCmp(char FAR *string1, char FAR *string2);
  802.  
  803. // Memory management functions:
  804. #if _MSC_VER
  805. #define _Alloca(size) _alloca(size)
  806.  
  807. #define _MemCmp(dest, src, length) memcmp(dest, src, length)
  808. #define _MemMove(dest, src, length) memmove(dest, src, length)
  809. #define _MemFill(ptr, c, length) memset(ptr, c, length)
  810.  
  811. #if MAC_API || MAC_OS
  812.  
  813. void * __cdecl _alloca(size_t);
  814. #define _Alloca(size) _alloca(size)
  815.  
  816. #endif
  817.  
  818. #endif
  819.  
  820. // Functions to set the return value of a library functiion:
  821. void FASTCALL _RetVal(Value FAR *val);
  822. void FASTCALL _RetChar(char FAR *string);
  823. void FASTCALL _RetInt(long ival, int width);
  824. void FASTCALL _RetFloat(double flt, int width, int dec);
  825. void FASTCALL _RetDateStr(char FAR *string);
  826. void FASTCALL _RetDateTimeStr(char FAR *string);
  827. void FASTCALL _RetLogical(int);
  828. void FASTCALL _RetCurrency(CCY money,int width);
  829.  
  830. // Database Input/Output functions:
  831. long FASTCALL _DBRecNo(int workarea);
  832. long FASTCALL _DBRecCount(int workarea);
  833. int     FASTCALL _DBStatus(int workarea);
  834. int  FASTCALL _DBRead(int workarea, long record);
  835. int  FASTCALL _DBWrite(int workarea);
  836. int     FASTCALL _DBAppend(int workarea, int carryflag);
  837. long FASTCALL _DBRewind(int workarea);
  838. long FASTCALL _DBSkip(int workarea, long distance);
  839. long FASTCALL _DBUnwind(int workarea);
  840. int  FASTCALL _DBReplace(Locator FAR *fld, Value FAR *val);
  841. long FASTCALL _DBSeek(Value FAR *val);
  842. int  FASTCALL _DBLock(int workarea, int what);
  843. void FASTCALL _DBUnLock(int workarea);
  844. int  FASTCALL _DBAppendRecords(int workarea, unsigned short nrecs, char FAR *buffer);
  845.  
  846. // Memo Field Input/Output functions:
  847. FCHAN FASTCALL  _MemoChan(int workarea);
  848. long FASTCALL _AllocMemo(Locator FAR *fld, long size);
  849. long FASTCALL _FindMemo(Locator FAR *fld);
  850. long FASTCALL _MemoSize(Locator FAR *fld);
  851.  
  852. // Memory variable manipulation functions:
  853. NTI FASTCALL _NewVar(char FAR *name, Locator FAR *loc, int flag);
  854. int FASTCALL _Release(NTI nti);
  855. int FASTCALL _Store(Locator FAR *loc, Value FAR *val);
  856. int FASTCALL _Load(Locator FAR *loc, Value FAR *val);
  857. long FASTCALL _ALen(NTI nti, int mode);
  858. int FASTCALL _FindVar(NTI nti, int where, Locator FAR *loc);
  859. NTI FASTCALL _NameTableIndex(char FAR *name);
  860.  
  861. // File Input/Output:
  862.  
  863. FCHAN FASTCALL __FOpen(char FAR *filename, int mode, int create);
  864.  
  865. #define _FOpen(filename, mode)            __FOpen(filename, mode, NO)
  866. #define _FCreate(filename, mode)        __FOpen(filename, mode, YES)
  867.  
  868. int FASTCALL __FFlush(FCHAN chan, int close);
  869.  
  870. #define _FFlush(chan)    __FFlush(chan, NO)
  871. #define _FClose(chan)    __FFlush(chan, YES)
  872.  
  873. int FASTCALL __FStat(FCHAN chan, int error);
  874.  
  875. #define _FEOF(chan)        __FStat(chan, NO)
  876. #define _FError()        __FStat(0, YES)
  877.  
  878. unsigned int FASTCALL __FIO(FCHAN chan, char FAR *buffer, unsigned int maxlen, int mode);
  879.  
  880. #define _FGets(chan, buffer, maxlen)    __FIO(chan, buffer, maxlen, FIO_FGETS)
  881. #define _FRead(chan, buffer, maxlen)    __FIO(chan, buffer, maxlen, FIO_FREAD)
  882. #define _FPuts(chan, buffer)            __FIO(chan, buffer, 0,        FIO_FPUTS)
  883. #define _FWrite(chan, buffer, maxlen)    __FIO(chan, buffer, maxlen, FIO_FWRITE)
  884.  
  885. long    FASTCALL _FSeek(FCHAN chan, long position, int mode);
  886. int        FASTCALL _FCHSize(FCHAN chan, long length);
  887. int        FASTCALL _FCopy(FCHAN dchan, long dpos, FCHAN schan, long spos, long len);
  888.  
  889. #if defined(_WIN32) || MAC_API || MAC_OS
  890.  
  891. // User Interface routines:
  892.  
  893. #define PIXELMODE    0
  894. #define CHARMODE    1
  895.  
  896. unsigned FASTCALL __ActivateHandler(FPFI handler, short charmode);
  897.  
  898. #define _ActivateHandler(handler)        __ActivateHandler(handler, CHARMODE)
  899. #define _ActivateHandlerP(handler)        __ActivateHandler(handler, PIXELMODE)
  900.  
  901. void    FASTCALL _DeActivateHandler(unsigned);
  902. unsigned FASTCALL __ActivateIdle(FPFI handler, short charmode);
  903.  
  904. #define  _ActivateIdle(handler)            __ActivateIdle(handler, CHARMODE)
  905. #define  _ActivateIdleP(handler)        __ActivateIdle(handler, PIXELMODE)
  906.  
  907. void    FASTCALL _DeActivateIdle(unsigned);
  908.  
  909. int        FASTCALL __GetNextEvent(EventRec FAR *event, short charmode);
  910.  
  911. #define _GetNextEvent(event)            __GetNextEvent(event, CHARMODE)
  912. #define _GetNextEventP(event)            __GetNextEvent(event, PIXELMODE)
  913.  
  914. void    FASTCALL __DefaultProcess(EventRec FAR *event, short charmode);
  915.  
  916. #define _DefaultProcess(event)            __DefaultProcess(event, CHARMODE)
  917. #define    _DefaultProcessP(event)            __DefaultProcess(event, PIXELMODE)
  918.  
  919. #define _MousePos(pt)            __MousePos(pt, CHARMODE)
  920. #define _MousePosP(pt)            __MousePos(pt, PIXELMODE)
  921.  
  922. int        FASTCALL __MousePos(Point FAR *pt, int charmode);
  923.  
  924. // Windowing routines:
  925.  
  926. int        FASTCALL __FindWindow(WHANDLE FAR *wh, Point pt, int charmode);
  927. void    FASTCALL __GlobalToLocal(Point FAR *pt, WHANDLE wh, int charmode);
  928. WHANDLE FASTCALL __WOpen(int top, int left, int bottom, int right, int flag, int
  929.                scheme_num, Scheme FAR *scheme, char FAR *bord, int pixelmode);
  930.  
  931. #define _WOpenP(top, left, bottom, right, flag, scheme_num, scheme, bord) __WOpen(top, left, bottom, right, flag, scheme_num, scheme, bord, PIXELMODE)
  932. #define _WOpen(top, left, bottom, right, flag, scheme_num, scheme, bord) __WOpen(top, left, bottom, right, flag, scheme_num, scheme, bord, CHARMODE)
  933.  
  934. #define _GlobalToLocal(pt, wh)        __GlobalToLocal(pt, wh, CHARMODE)
  935. #define _GlobalToLocalP(pt, wh)        __GlobalToLocal(pt, wh, PIXELMODE)
  936.  
  937. #define _FindWindow(wh, pt)            __FindWindow(wh, pt, CHARMODE)
  938. #define _FindWindowP(wh, pt)        __FindWindow(wh, pt, PIXELMODE)
  939.  
  940.  
  941. #define _WTop(wh)        ((unsigned)__WStat(wh, WS_TOP, CHARMODE))
  942. #define _WBottom(wh)    ((unsigned)__WStat(wh, WS_BOTTOM, CHARMODE))
  943. #define _WLeft(wh)        ((unsigned)__WStat(wh, WS_LEFT, CHARMODE))
  944. #define _WRight(wh)        ((unsigned)__WStat(wh, WS_RIGHT, CHARMODE))
  945. #define _WHeight(wh)    ((unsigned)__WStat(wh, WS_HEIGHT, CHARMODE))
  946. #define _WWidth(wh)        ((unsigned)__WStat(wh, WS_WIDTH, CHARMODE))
  947. #define _WSetPort(wh)    ((WHANDLE)__WStat(wh, WS_SETPORT, CHARMODE))
  948.  
  949. #define _WTopP(wh)        ((unsigned)__WStat(wh, WS_TOP, PIXELMODE))
  950. #define _WBottomP(wh)    ((unsigned)__WStat(wh, WS_BOTTOM, PIXELMODE))
  951. #define _WLeftP(wh)        ((unsigned)__WStat(wh, WS_LEFT, PIXELMODE))
  952. #define _WRightP(wh)    ((unsigned)__WStat(wh, WS_RIGHT, PIXELMODE))
  953. #define _WHeightP(wh)    ((unsigned)__WStat(wh, WS_HEIGHT, PIXELMODE))
  954. #define _WWidthP(wh)    ((unsigned)__WStat(wh, WS_WIDTH, PIXELMODE))
  955.  
  956. unsigned long FASTCALL __WStat(WHANDLE wh, int mode, int pixelmode);
  957.  
  958. #define _WMove(wh, pt)            __WAdjust(wh, pt, WA_MOVE, CHARMODE)
  959. #define _WSize(wh, pt)            __WAdjust(wh, pt, WA_SIZE, CHARMODE)
  960. #define _WPosCursor(wh, pt)        __WAdjust(wh, pt, WA_POSCURSOR, CHARMODE)
  961. #define _WMoveP(wh, pt)            __WAdjust(wh, pt, WA_MOVE, PIXELMODE)
  962. #define _WSizeP(wh, pt)            __WAdjust(wh, pt, WA_SIZE, PIXELMODE)
  963. #define _WPosCursorP(wh, pt)    __WAdjust(wh, pt, WA_POSCURSOR, PIXELMODE)
  964.  
  965. void    FASTCALL __WAdjust(WHANDLE wh, Point pt, int mode, int charmode);
  966. void    FASTCALL __WScroll(WHANDLE wh, Rect r, int dv, int dh, int charmode);
  967.  
  968. #define    _WScroll(wh, r, dv, dh)        __WScroll(wh, r, dv, dh, CHARMODE)
  969. #define    _WScrollP(wh, r, dv, dh)    __WScroll(wh, r, dv, dh, PIXELMODE)
  970. #define _WClearRect(wh, r)            __WScroll(wh, r, 0, 0, CHARMODE);
  971. #define _WClearRectP(wh, r)            __WScroll(wh, r, 0, 0, PIXELMODE);
  972.  
  973. #define _WGetCursor(wh)             __WGetCursor(wh, CHARMODE)
  974. #define _WGetCursorP(wh)         __WGetCursor(wh, PIXELMODE)
  975.  
  976. Point    FASTCALL __WGetCursor(WHANDLE wh, int);
  977.  
  978. void    FASTCALL __SetMenuPoint(MenuId menuid, FoxPoint loc, int charmode);
  979.  
  980. #define _SetMenuPoint(menuid, loc)        __SetMenuPoint(menuid, loc, CHARMODE)
  981. #define _SetMenuPointP(menuid, loc)        __SetMenuPoint(menuid, loc, PIXELMODE)
  982.  
  983.  
  984. #else   // defined(_WIN32) || MAC_API
  985.  
  986. // User Interface routines:
  987.  
  988. unsigned _ActivateHandler(FPFI handler);
  989. void     _DeActivateHandler(unsigned);
  990. unsigned _ActivateIdle(FPFI handler);
  991. void    _DeActivateIdle(unsigned);
  992. int     _GetNextEvent(EventRec FAR *event);
  993. void     _DefaultProcess(EventRec FAR *event);
  994. int     _MousePos(Point FAR *pt);
  995.  
  996. // Windowing routines:
  997.  
  998. int     _FindWindow(WHandle FAR *wh, Point pt);
  999. void     _GlobalToLocal(Point FAR *pt, WHandle wh);
  1000. WHandle _WOpen(int top, int left, int bottom, int right, int flag, int
  1001.            scheme_num, Scheme FAR *scheme, char FAR *bord);
  1002.  
  1003. #define _WTop(wh)        ((unsigned)__WStat(wh, WS_TOP))
  1004. #define _WBottom(wh)    ((unsigned)__WStat(wh, WS_BOTTOM))
  1005. #define _WLeft(wh)        ((unsigned)__WStat(wh, WS_LEFT))
  1006. #define _WRight(wh)        ((unsigned)__WStat(wh, WS_RIGHT))
  1007. #define _WHeight(wh)    ((unsigned)__WStat(wh, WS_HEIGHT))
  1008. #define _WWidth(wh)        ((unsigned)__WStat(wh, WS_WIDTH))
  1009. #define _WSetPort(wh)    ((WHandle)__WStat(wh, WS_SETPORT))
  1010.  
  1011. unsigned long __WStat(WHandle wh, int mode);
  1012.  
  1013. #define _WMove(wh, pt)        __WAdjust(wh, pt, WA_MOVE)
  1014. #define _WSize(wh, pt)        __WAdjust(wh, pt, WA_SIZE)
  1015. #define _WPosCursor(wh, pt)    __WAdjust(wh, pt, WA_POSCURSOR)
  1016.  
  1017. void __WAdjust(WHandle wh, FoxPoint pt, int mode);
  1018.  
  1019. void     _WScroll(WHandle wh, Rect r, int dv, int dh);
  1020. #define _WClearRect(wh, r)    _WScroll(wh, r, 0, 0);
  1021.  
  1022. Point    _WGetCursor(WHandle wh);
  1023. void    _SetMenuPoint(MenuId menuid, Point loc);
  1024.  
  1025. #endif    // __WINDOWS__ || _WINDLL
  1026.  
  1027.  
  1028. int     FASTCALL _InKey(int timeout, int flag);
  1029. void    FASTCALL _RefreshDisplay(void);
  1030. void     FASTCALL _RefreshVideo(void);
  1031.  
  1032. #define _WClear(wh)        __WControl(wh, WC_CLEAR)
  1033. #define _WClose(wh)        __WControl(wh, WC_CLOSE)
  1034. #define _WHide(wh)        __WControl(wh, WC_HIDE)
  1035. #define _WShow(wh)        __WControl(wh, WC_SHOW)
  1036. #define _WSelect(wh)    __WControl(wh, WC_SELECT)
  1037. #define _WSendBehind(w) __WControl(w, WC_SENDBEHIND)
  1038.  
  1039. void FASTCALL __WControl(WHANDLE wh, int mode);
  1040.  
  1041. #define _WOnTop()        __WPort(WP_ONTOP)
  1042. #define _WGetPort()        __WPort(WP_OUTPUT)
  1043.  
  1044. WHandle FASTCALL __WPort(int mode);
  1045.  
  1046. void    FASTCALL _WZoom(WHANDLE wh, int newstate);
  1047.  
  1048. void    FASTCALL __WSetTitle(WHANDLE wh, char FAR *text, int mode);
  1049.  
  1050. #define WT_SETFOOTER    0
  1051. #define WT_SETTITLE        1
  1052. #define WT_GETFOOTER    2
  1053. #define WT_GETTITLE        3
  1054.  
  1055. #define _WSetFooter(wh, footer) __WSetTitle(wh, footer, WT_SETFOOTER)
  1056. #define _WSetTitle(wh, title)    __WSetTitle(wh, title, WT_SETTITLE)
  1057. #define _WFooter(wh, footer)    __WSetTitle(wh, footer, WT_GETFOOTER)
  1058. #define _WTitle(wh, title)        __WSetTitle(wh, title, WT_GETTITLE)
  1059.  
  1060. int        FASTCALL _WAttr(WHANDLE wh, int color);
  1061. void    FASTCALL _WSetAttr(WHANDLE wh, int color, int attr);
  1062. void    FASTCALL _WPutChr(WHANDLE wh, int character);
  1063. void    FASTCALL _WPutStr(WHANDLE wh, char FAR *str);
  1064.  
  1065. // Functions to execute FoxPro statements and evaluate FoxPro expressions:
  1066.  
  1067. int FASTCALL _Execute(char FAR *stmt);
  1068. int FASTCALL _Evaluate(Value FAR *val, char FAR *expr);
  1069.  
  1070. // Menuing functions:
  1071.  
  1072. long    FASTCALL __MenuStat(long x, int mode);
  1073.  
  1074. #define _MenuId(literal)                __MenuStat(literal, 0)
  1075. #define _GetNewItemId(menuid)            __MenuStat(menuid, 1)
  1076. #define _CountItems(menuid)                __MenuStat(menuid, 2)
  1077. #define _GetNewMenuId()                    __MenuStat(0, 3)
  1078.  
  1079. int        FASTCALL _MenuInteract(MenuId FAR *menuid, ItemId FAR *itemid);
  1080.  
  1081. void    FASTCALL __MenuAction(MenuId menuid, int mode);
  1082.  
  1083. #define _ActivateMenu(menuid)            __MenuAction(menuid, 0)
  1084. #define _DeActivateMenu(menuid)            __MenuAction(menuid, 1)
  1085. #ifndef GLOBAL_INCLUDED
  1086. #define _DisposeMenu(menuid)            __MenuAction(menuid, 2)
  1087. #endif
  1088.  
  1089. int        FASTCALL _NewMenu(int mtype, MenuId menuid);
  1090. void    FASTCALL _SetMenuColor(MenuId menuid, int scheme);
  1091. ItemId    FASTCALL _GetItemId(MenuId menuid, long index);
  1092. int        FASTCALL _NewItem(MenuId menuid, ItemId itemid, ItemId beforeid, char FAR *prompt);
  1093. void    FASTCALL _DisposeItem(MenuId menuid, ItemId itemid);
  1094.  
  1095. void    FASTCALL __GetItemText(MenuId menuid, ItemId itemid, char FAR *text, int mode);
  1096.  
  1097. #define _GetItemText(menuid, itemid, text) __GetItemText(menuid, itemid, text, 0)
  1098. #define _GetOSPrompt(menuid, itemid, text) __GetItemText(menuid, itemid, text, 1)
  1099.  
  1100. void    FASTCALL _SetItemSubMenu(MenuId menuid, ItemId itemid, MenuId submenuid);
  1101. MenuId    FASTCALL _GetItemSubMenu(MenuId menuid, ItemId itemid);
  1102. void    FASTCALL _SetItemColor(MenuId menuid, ItemId itemid, int scheme);
  1103. void    FASTCALL _SetItemText(MenuId menuid, ItemId itemid, char FAR *text);
  1104. int        FASTCALL _GetItemCmdKey(MenuId menuid, ItemId itemid, char FAR *text);
  1105. void    FASTCALL _SetItemCmdKey(MenuId menuid, ItemId itemid, int key, char FAR *text);
  1106. void    FASTCALL _OnSelection(MenuId menuid, ItemId itemid, FPFI routine);
  1107.  
  1108. // FoxPro Dialogs:
  1109. int        FASTCALL _Dialog(int scheme, char FAR *text, char FAR *button1,
  1110.                 char FAR *button2, char FAR *button3, int def, int esc);
  1111.  
  1112.  
  1113. // Error Handling:
  1114. void    FASTCALL _Error(int code);
  1115. void    FASTCALL _UserError(char FAR *message);
  1116. int        FASTCALL _ErrorInfo(int code, char FAR *message);
  1117.  
  1118.  
  1119. #define ED_SAVENOASK    0
  1120. #define    ED_SAVEASK        1
  1121. #define ED_SAVEAS        2
  1122.  
  1123. //
  1124. // Mode flags for the editor functions:
  1125. //
  1126.  
  1127. /* Mode flag values for the __EdPos function */
  1128. #define ED_SETPOS        0
  1129. #define ED_GETLINEPOS    1
  1130. #define ED_GETLINENUM    2
  1131. #define ED_GETPOS        3
  1132.  
  1133. /* Mode flag values for the __EdScroll function */
  1134. #define ED_SCROLLTOPOS    0
  1135. #define ED_SCROLLTOSEL    1
  1136.  
  1137. /* Mode flag values for the __EdManip function */
  1138. #define ED_SENDKEY        0
  1139. #define ED_DELETE        1
  1140. #define ED_INDENT        2
  1141. #define ED_COMMENT        3
  1142. #define ED_PROPERTIES    4
  1143. #define ED_PROCLIST        5
  1144.  
  1145. /* Mode flag values for the __EdClipBrd function */
  1146. #define ED_COPY            0
  1147. #define ED_CUT            1
  1148. #define ED_PASTE        2
  1149. #define ED_UNDO            3
  1150. #define ED_REDO            4
  1151.  
  1152. /* Mode flag values for the __EdEnv function */
  1153. #define ED_SETENV        0
  1154. #define ED_GETENV        1
  1155.  
  1156. /* Mode flag values for the __EdRevert function */
  1157. #define ED_REVERT        0
  1158. #define ED_SAVE            1
  1159.  
  1160. /* Mode flag values for the __WFindTitle function */
  1161. #define WFINDTITLE     0
  1162. #define WMAINWINDOW    1
  1163. #define WFUNCTIONMASK    0x0f
  1164. #define WCLIENTFLAG        0x10
  1165.  
  1166.  
  1167. // Editor Functions:
  1168.  
  1169. WHandle FASTCALL _EdOpenFile(char FAR *filename, int mode);
  1170. int        FASTCALL _EdCloseFile(WHandle wh, int opt);
  1171. void    FASTCALL __EdRevert(WHandle wh, int mode);
  1172.  
  1173. #define _EdRevert(wh)                __EdRevert(wh, ED_REVERT)
  1174. #define _EdSave(wh)                    __EdRevert(wh, ED_SAVE)
  1175.  
  1176. #define _EdSetPos(wh, pos)            ((long)__EdPos(wh, (EDPOS) pos, ED_SETPOS))
  1177. #define _EdGetLinePos(wh, line)        ((EDPOS)__EdPos(wh, (EDLINE) line, ED_GETLINEPOS))
  1178. #define _EdGetLineNum(wh, pos)        ((EDLINE)__EdPos(wh, (EDPOS) pos, ED_GETLINENUM))
  1179. #define _EdGetPos(wh)                ((EDLINE)__EdPos(wh, 0, ED_GETPOS))
  1180.  
  1181. long    FASTCALL __EdPos(WHandle wh, long pos, int mode);
  1182. int        FASTCALL _EdPosInView(WHandle wh, EDPOS pos);
  1183.  
  1184. #define _EdScrollToPos(wh, pos, flag)    (__EdScroll(wh, pos, flag, ED_SCROLLTOPOS))
  1185. #define _EdScrollToSel(wh, flag)        (__EdScroll(wh, 0, flag, ED_SCROLLTOSEL))
  1186.  
  1187. void    FASTCALL __EdScroll(WHandle wh, EDPOS pos, int flags, int mode);
  1188.  
  1189. #define _EdSendKey(wh, key)            __EdManip(wh, key, ED_SENDKEY)
  1190. #define    _EdDelete(wh)                __EdManip(wh, 0, ED_DELETE)
  1191. #define _EdIndent(wh, tabs)            __EdManip(wh, tabs, ED_INDENT)
  1192. #define _EdComment(wh, tabs)        __EdManip(wh, tabs, ED_COMMENT)
  1193. #define _EdProperties(wh)            __EdManip(wh, 0, ED_PROPERTIES)
  1194. #define _EdProcList(wh)                __EdManip(wh, 0, ED_PROCLIST)
  1195.  
  1196. void    FASTCALL __EdManip(WHandle wh, int n, int mode);
  1197.  
  1198. EDPOS    FASTCALL _EdSkipLines(WHandle wh, EDPOS pos, int n);
  1199. void     FASTCALL _EdInsert(WHandle wh, char FAR *str, unsigned long len);
  1200. TEXT    FASTCALL _EdGetChar(WHandle wh, EDPOS pos);
  1201. void    FASTCALL _EdGetStr(WHandle wh, EDPOS pos1, EDPOS pos2, TEXT FAR *str);
  1202.  
  1203. #define _EdCopy(wh)                    __EdClipBrd(wh, ED_COPY)
  1204. #define _EdCut(wh)                    __EdClipBrd(wh, ED_CUT)
  1205. #define _EdPaste(wh)                __EdClipBrd(wh, ED_PASTE)
  1206. #define _EdUndo(wh)                    __EdClipBrd(wh, ED_UNDO)
  1207. #define _EdRedo(wh)                    __EdClipBrd(wh, ED_REDO)
  1208.  
  1209. void     FASTCALL __EdClipBrd(WHandle wh, int mode);
  1210. void    FASTCALL _EdSelect(WHandle wh, EDPOS pos1, EDPOS pos2);
  1211. void     FASTCALL _EdUndoOn(WHandle wh, int flag);
  1212. void    FASTCALL _EdActive(WHandle wh, int flag);
  1213. int        FASTCALL _EdLastError(WHandle wh);
  1214.  
  1215. #define _EdSetEnv(wh, env)            __EdEnv(wh, env, ED_SETENV)
  1216. #define _EdGetEnv(wh, env)            __EdEnv(wh, env, ED_GETENV)
  1217.  
  1218. #define _WFindTitle(title)            __WFindTitle(title, WFINDTITLE)
  1219. #define _WFindClientTitle(title)    __WFindTitle(title, WFINDTITLE | WCLIENTFLAG)
  1220. #define _WMainWindow()                __WFindTitle(0, WMAINWINDOW)
  1221. #define _WMainClientWindow()        __WFindTitle(0, WMAINWINDOW | WCLIENTFLAG)
  1222.  
  1223.  
  1224. int        FASTCALL __EdEnv(WHandle, EDENV FAR *, int);
  1225. #if MAC_API || MAC_OS
  1226. WindowPtr _WhToHwnd(WHandle);
  1227. #else
  1228. HWND     FASTCALL _WhToHwnd(WHandle);
  1229. #endif
  1230. WHandle FASTCALL __WFindTitle(char FAR *, int);
  1231.  
  1232. // Object model extensions
  1233. #define _WGetObjectClientWindow(objct)    __WGetObjectWindow(objct, WCLIENTFLAG)
  1234. #define _WGetObjectWindow(objct)        __WGetObjectWindow(objct, 0)
  1235.  
  1236. WHandle FASTCALL __WGetObjectWindow(Value FAR *, int);
  1237.  
  1238. int    FASTCALL _SetObjectProperty(Value FAR *objct, char FAR *prop, Value FAR *val, int fadd);
  1239. int    FASTCALL _GetObjectProperty(Value FAR *val, Value FAR *objct, char FAR *prop);
  1240.  
  1241. int FASTCALL _ObjectReference(Value FAR *objct);
  1242. int FASTCALL _ObjectRelease(Value FAR *objct);
  1243. int FASTCALL _ObjectCmp(Value FAR *objct1, Value FAR *objct2);
  1244. void FASTCALL _FreeObject(Value FAR *objct);
  1245.  
  1246. //_OCXAPI will allow developers of OCXs to use the LCK
  1247. //    Sample call: _OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_ATTACH);
  1248.  
  1249. BOOL WINAPI _OCXAPI(HINSTANCE hInstance,DWORD dwReason);
  1250.  
  1251. #ifdef GLOBAL_INCLUDED
  1252. #undef    WHANDLE
  1253. #endif
  1254.  
  1255. #endif                  // PRO_EXT_INCLUDED
  1256.  
  1257. #ifdef __cplusplus
  1258. }                       // End of extern "C" {
  1259. #endif
  1260.  
  1261. #if defined(__SC__)
  1262. #pragma SC align
  1263. #elif defined(__MWERKS__)
  1264. #pragma align=reset
  1265. #elif defined(_MSC_VER)
  1266. #pragma pack(pop)          // Restore structure packing
  1267. #endif
  1268.