home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Unleashed / Visual_Basic_4_Unleashed_SAMS_Publishing_1995.iso / repease / rep.h < prev    next >
C/C++ Source or Header  |  1995-07-18  |  17KB  |  366 lines

  1. /*****************************************************************************
  2.     This file should be included into your application modules which call
  3.     the Report Right interface functions.
  4. *****************************************************************************/
  5. #if defined (_WIN32)
  6.    #if !defined(WIN32)
  7.      #define WIN32
  8.    #endif
  9. #endif
  10. /******************************************************************************
  11.     WIN32 specific defines
  12. *******************************************************************************/
  13. #if defined (WIN32)
  14.    #define huge
  15.    #define _export
  16. #else
  17.    #define huge huge 
  18. #endif
  19.  
  20. /****************************************************************************
  21.    Instructions for packing the following structure
  22. *****************************************************************************/
  23. #ifndef RC_INVOKED
  24.    #pragma pack(1)
  25. #endif
  26.  
  27. /*****************************************************************************
  28.    The parameter structure definition that is used by your application
  29.    to specify the operation parameters and text data to the 'form' routine.
  30.    For an example for using this structure, refer to the demo.c file.
  31. *****************************************************************************/
  32.  
  33. typedef struct StrForm { 
  34.        int    x;         // Initial x position of the editing window,
  35.                          // you may specify CW_USEDEFAULT to use default values.
  36.        int    y;         // Initial y position of the editing window.
  37.        int    width;     // Initial width of the window in device units,
  38.                          // you may specify CW_USEDEFAULT to use default values.
  39.        int    height;    // Initial height of the editing window.  When you
  40.                          // use CW_USEDEFAULT for width, the height parameter is 
  41.                          // ingnored.*/
  42.  
  43.        int (FAR PASCAL _export *UserSelection)(HWND, struct StrField huge *,int); 
  44.                            /* a pointer to the function returning the user 
  45.                            selected field through the structure pointer. 
  46.                            Your application returns the chosen field through 
  47.                            the first parameter.  The second argument indicates 
  48.                            the sort field number. If it is equal to zero,  
  49.                            it means that the field being sought is not a sort 
  50.                            field. The function returns a TRUE value if 
  51.                            successful. 
  52.  
  53.                            When using ReportEase as a DLL, this pointer must
  54.                            be passed using the MakeProcInstance function.  Your
  55.                            application must define this function as exportatable
  56.                            and include it it the EXPORT section of the 
  57.                            definition file
  58.                            */
  59.  
  60.        int (FAR PASCAL _export *VerifyField)(struct StrField huge *,int);
  61.                            /* a pointer to the user routine that validate a 
  62.                            field name.  The field name is passed to the routine 
  63.                            by the 'name' variable in the StrField structure.  
  64.                            This routine should also fill the 'type' variable 
  65.                            in the structure. The second arguement indicates the 
  66.                            sort field number. If it is equal to zero, it means 
  67.                            that the field to verify is not a sort field.  The 
  68.                            function returns TRUE to indicate a valid field. 
  69.                            
  70.                            When using ReportEase as a DLL, this pointer must
  71.                            be passed using the MakeProcInstance function.  Your
  72.                            application must define this function as exportatable
  73.                            and include it it the EXPORT section of the 
  74.                            definition file
  75.                            */
  76.                            
  77.  
  78.        char file[130];  // form file name. If an existing file is specified,
  79.                         // the following fields are ignored. 
  80.                                             
  81.        char DataSetName[20];/* (Specify for a new file) Your application can 
  82.                            specify a data set name which can be used to
  83.                            associate the application data to the form.  This
  84.                            is an optional field. */
  85.  
  86.         BOOL   ShowMenu;  // show the menu bar ? 
  87.         BOOL   ShowHorBar;// show the horizonatal scroll bar 
  88.         BOOL   ShowVerBar;// show the vertical scroll bar 
  89.  
  90.         HANDLE hInst;     //  Handle of the current instanaces. 
  91.         HANDLE hPrevInst; //  Handle of the previous instances. 
  92.         HWND   hParentWnd;// Handle to the parent window 
  93.         HWND   hFrWnd;    //  Form main window handle, will be filled by RE later  
  94.         DWORD  style;     //  Editor window style 
  95.         char   FontTypeFace[32]; // Default type face, example: TmwRmn Courier, etc 
  96.         BOOL   open;      // TRUE indicates an open window (parameter block in use)
  97.         BOOL   modified;  // TRUE when the file modified, and needs to be saved 
  98.        };
  99.  
  100. typedef int (FAR PASCAL _export *USER_SELECTION)(HWND, struct StrField huge *,int); 
  101. typedef int (FAR PASCAL _export *VERIFY_FIELD)(struct StrField huge *,int);
  102.  
  103. /*****************************************************************************
  104.    The parameter structure definition that is used by your application
  105.    to specify the operation parameters to start a report execution session.
  106.    For an example for using this structure, refer to the demo.c file.
  107. *****************************************************************************/
  108.  
  109. typedef struct StrRep { 
  110.        char file[129];   // form file name 
  111.  
  112.        char device;      // P=Printer,S=Screen,A=Ask the user. The following
  113.                          // 4 parameters are not used if the device is
  114.                          // set to 'P' 
  115.  
  116.        int    x;         // Initial x position of the report window,
  117.                          // you may specify CW_USEDEFAULT to use default values.
  118.        int    y;         // Initial y position of the report window.
  119.        int    width;     // Initial width of the window in device units,
  120.                          // you may specify CW_USEDEFAULT to use default values.
  121.        int    height;    // Initial height of the editing window.  When you
  122.                          // use CW_USEDEFAULT for width, the height parameter is 
  123.                          // ingnored.
  124.        
  125.        struct StrField huge *field; // (OUTPUT) pointer to an array of fields used by the 
  126.                                     // form 
  127.        int TotalFields;     // (OUTPUT) Number of fields in the 'field' array. 
  128.  
  129.        struct StrField huge *SortField; // (OUTPUT) pointer to an array of fields used for
  130.                                         // sorting.
  131.        int TotalSortFields; // (OUTPUT) Number of fields in the 'SortField' array. 
  132.        
  133.        char DataSetName[20];// (OUTPUT) This field returns the data set name
  134.                             // associated with the form.  Your application
  135.                             // may use this information to prepare data for 
  136.                             // the report executer 
  137.        
  138.        char   SwapDir[60];  // Directory path to store swapped screen pages
  139.                             // When this variable is equal to NULL, RE will use
  140.                             // the current working directory for swapping.
  141.                                                                                                             
  142.        HANDLE hInst;        //  Handle of the current instanaces. 
  143.        HANDLE hPrevInst;    //  Handle of the previous instances. 
  144.        HWND   hParentWnd;   //  Handle to the parent window 
  145.        DWORD  style;        //  Report window style - needed for screen output only 
  146.  
  147.        int (FAR PASCAL _export *DrawPicture)(HDC, int, int, int, RECT far *); 
  148.  
  149.    };
  150.  
  151. typedef int (FAR PASCAL _export *DRAW_PICTURE)(HDC, int , int, int, RECT far *); 
  152.  
  153. /*****************************************************************************
  154.                        Global Constants
  155. *****************************************************************************/
  156.  
  157. #if defined (WIN32)
  158.   #define FORM_SIGN       0xDEBA
  159. #else
  160.   #define FORM_SIGN       0xDEBC
  161. #endif
  162.  
  163. #define UNITS_PER_INCH  250
  164. #define NAME_WIDTH      50
  165.  
  166. #define SRC_APPL        0
  167. #define SRC_CALC        1
  168. #define SRC_SYS         2
  169. #define SRC_CONST       3
  170. #define SRC_NONE        4
  171. #define SRC_DLG         5
  172.  
  173. #define TYPE_NUM        1
  174. #define TYPE_DBL        2
  175. #define TYPE_TEXT       3
  176. #define TYPE_LOGICAL    4
  177. #define TYPE_DATE       5
  178. #define TYPE_PICT       6
  179.  
  180. #define SUM_NONE        0
  181. #define SUM_TOTAL       1
  182. #define SUM_AVERAGE     2
  183. #define SUM_COUNT       3
  184. #define SUM_MAX         4
  185. #define SUM_MIN         5
  186.  
  187. #define DT_MMDDYY       0
  188. #define DT_DDMMYY       1
  189. #define DT_MMDDYYYY     2
  190. #define DT_MMMDDYYYY    3
  191.  
  192. #define FLAG_TRIM       0x1
  193. #define FLAG_SUP_ZERO   0x2
  194. #define FLAG_PAD_ZERO   0x4
  195. #define FLAG_CAPS       0x8
  196. #define FLAG_FIRST_CAP  0x10
  197. #define FLAG_SMALL      0x20
  198. #define FLAG_COMMA      0x40
  199. #define FLAG_WRAP       0x80
  200. #define FLAG_WORD_WRAP  0x100
  201. #define FLAG_RETAIN     0x200
  202. #define FLAG_FLEX_SIZE  0x400
  203.  
  204. #define RFLAG_TRIAL     0x1
  205.  
  206. #define ERR_NO_FILE     1
  207. #define ERR_NO_DEVICE   2
  208. #define ERR_NO_MEM      3
  209. #define ERR_BAD_EXP     4
  210. #define ERR_SUSPEND     5
  211. #define ERR_ZERO_DIVIDE 6
  212. #define ERR_TYPE_MISMATCH 7
  213. #define ERR_INCOMPLETE  8
  214. #define ERR_DUPLICATE   9
  215. #define ERR_PRINTER     10
  216. #define ERR_IO          11
  217. #define ERR_DISPLAY     12
  218. #define ERR_WRAP        13
  219. #define ERR_FONT        14
  220. #define ERR_OTHER       15
  221.  
  222. #define ERR_BAD_WND     16
  223.  
  224. typedef long (FAR PASCAL _export *MSG_CALLBACK)(HWND,UINT);
  225.  
  226. /******************************************************************************
  227.                         Form Header Structure
  228. ******************************************************************************/
  229. struct StrFormHdr {
  230.            unsigned FormSign;     // Form File Signature 
  231.            
  232.            char name[NAME_WIDTH+2]; // report name 
  233.  
  234.            char DataSetName[20];  // Your application can specify a data set 
  235.                                   // name which can be used to associate the 
  236.                                   // application data to the form.  This
  237.                                   // is an optional information.
  238.            
  239.            int   TotalItems;      // screen items in the form template 
  240.            int   FieldCount;      // total number of fields 
  241.            int   BreakFieldCount; // total number of break fields 
  242.            int   FontCount;       // number of entries in the font table 
  243.  
  244.            float LeftMargin;      // margins in inches 
  245.            float RightMargin;
  246.            float TopMargin;
  247.            float BottomMargin;
  248.  
  249.            int   SelExp[NAME_WIDTH+2]; // record selection expression 
  250.  
  251.            int   Orientation;     // DMORIENT_PORTRAIT or DMORIENT_LANDSCAPE 
  252.            int   PaperSize;       // paper size given by DMPAPER_* variables used for DEVMODE 
  253.            int   PaperLength;     // specified in tenths of millimeter, used only if PaperSize = 0 
  254.            int   PaperWidth;      // specified in tenths of millimeter, used only if PaperSize = 0 
  255.            int   PrintQuality;    // print quality 
  256.  
  257.            char PrinterName[NAME_WIDTH+2],      // name of the printer 
  258.                 PrinterDriver[NAME_WIDTH+2];    // printer driver name 
  259.  
  260.            unsigned flags;        // RFLAG_ series flags 
  261.  
  262.            int  DateFormat;       // 0=MM/DD/YY, 1=DD/MM/YY 
  263.            
  264.            int  RulerType;        // RULER_OFF,RULER_INCH,RULER_CM
  265.            
  266.            int  SecBannerHeight;  // height (logical units) of the section banner                        
  267.            int  FileFormatId;     // records the file format changes
  268.            char reserved[146];
  269.        };
  270.  
  271. /******************************************************************************
  272.                         Field Structure
  273. ******************************************************************************/
  274. struct StrField {                 // define each field 
  275.          int source;              // source of field data: application,calculation,system, constant etc 
  276.  
  277.          char name[NAME_WIDTH+2]; // field name 
  278.          int FileId;              // an optional id that may be defined by the calling application 
  279.          int FieldId;             // another optional id that may be defined by the calling application 
  280.          int type;                // numeric/alphanumeric/logical/date 
  281.          int width;               // field data width as stored in your database
  282.          int DecPlaces;           // decimal places for numeric fields 
  283.          int AllowChanges;        // Allow modification of the following fields 
  284.  
  285.          int InUse;               // TRUE=in use, FALSE=not in use 
  286.          unsigned flags;          // flags 
  287.          int SumType;             // summary type: total/average/minmum/maximum/none 
  288.          int SysIdx;              // index into the system field table for system fields 
  289.  
  290.          int  DateFormat;         // date format   
  291.          char DateDelim[2];       // date delimiter character, i.e. / or - 
  292.  
  293.          char CurrencySymbol[4];  // currency symbol 
  294.          char LogicalSymbols[2];  // logical TRUE and FALSE symbols 
  295.  
  296.          char NegSignPrefix[4];   // negative sign prefix 
  297.          char NegSignSuffix[4];   // negative sign suffix 
  298.          char PosSignPrefix[4];   // positive sign prefix 
  299.          char PosSignSuffix[4];   // positive sign suffix 
  300.  
  301.          int    CalcExp[NAME_WIDTH+2]; // expression for the calculated fields 
  302.          
  303.          LPSTR  CharData;         // character data, pointer to an object of size = field.width+1 
  304.          long   NumData;          // numeric data (long) 
  305.          double DblData;          // numeric data for field = TYPE_DBL 
  306.  
  307.          long   HoldNum;          // long accumulater: total,minimum,maximum,etc...
  308.          double HoldDbl;          // double accumulater: total,minimum,maximum,etc...
  309.          long   count;            // number of records in a group during execution 
  310.  
  311.          int   section;           // section that holds the field (report time only)
  312.          int   misc;              // used for miscellaneous purposes 
  313.  
  314.          char  ParaChar[2];       // specify the new paragraph indicator character 
  315.                                   // in the first byte.  Needed only for a word/wrapped
  316.                                   // text field. 
  317.  
  318.          char  reserved[14];      // reserved to pad to 256
  319.        };
  320.  
  321. /****************************************************************************
  322.    Instructions to resume the default structure packing.
  323. *****************************************************************************/
  324. #ifndef RC_INVOKED
  325.    #pragma pack()
  326. #endif
  327.  
  328. /******************************************************************************
  329.                         Calleable Function Prototypes
  330.    When calling REP from a C program, leave the REP_CPLUSPLUS symbol undefined.
  331.  
  332.    When calling REP from a C++ program, define the REP_CPLUSPLUS as following:
  333.  
  334.    #define REP_CPLUSPLUS extern "C"
  335.    #include "rep.h"
  336. ******************************************************************************/
  337. #ifndef REP_CPLUSPLUS
  338.    #define REP_CPLUSPLUS
  339. #endif
  340.  
  341. REP_CPLUSPLUS int  WINAPI _export form(struct StrForm far *);
  342. REP_CPLUSPLUS int  WINAPI _export RepInit(struct StrRep far *);
  343. REP_CPLUSPLUS int  WINAPI _export RepRec(void);
  344. REP_CPLUSPLUS int  WINAPI _export RepExit(void);
  345.  
  346. REP_CPLUSPLUS HWND WINAPI _export RepGetParent(void);
  347. REP_CPLUSPLUS int  WINAPI _export RepSetMsgCallback(MSG_CALLBACK);
  348.  
  349.  
  350. /******************************************************************************
  351.                REP Messages
  352. *******************************************************************************/
  353.  
  354. /*******************************************************************************
  355.    REP_CLOSE:
  356.    This message is sent to your application by the form editor and 
  357.    report executer.
  358.  
  359.    Form Editor sends this messages before closing the form editor window.
  360.    
  361.    The report executer sends this message before after writing the last
  362.    report line.
  363. *******************************************************************************/
  364. #define REP_CLOSE    (WM_USER)
  365.  
  366.