home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / 32ADDRES.PAK / ADDRESS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  9.3 KB  |  270 lines

  1. // BDE32 3.x - (C) Copyright 1996 by Borland International
  2.  
  3. #include <idapi.h>
  4. #include <windows.h>
  5. #include <windowsx.h>
  6. #include <commdlg.h>
  7. #include <ctl3d.h>
  8. #include <cderr.h>
  9. #include <string.h>
  10. #include <io.h>
  11. #include <stdlib.h>
  12. #include <stdio.h>
  13. #include <dos.h> // for date structure and getdate function
  14. #include <direct.h>
  15. #include <errno.h>
  16. #include <malloc.h>
  17. #include <ctype.h>
  18. #include "id_defs.h"
  19. #include "macro.h"
  20.  
  21. // Macro for Subclassing the edit control.
  22. #define SubClassWindow(hWnd, lpfn) \
  23.         ((WNDPROC)SetWindowLong((hWnd), GWL_WNDPROC, \
  24.         (LPARAM)(WNDPROC)(lpfn)))
  25.  
  26. // Define used for Microsoft compilers
  27. #if defined(_MSC_VER)
  28.     #define farmalloc(parm) _fmalloc(parm)
  29.     #define farfree(parm) _ffree(parm)
  30.     // Leave it blank on purpose as VC++ minds having far declared.
  31.     #define ABFAR
  32. #endif
  33.  
  34. #if defined(__TURBOC__) && defined(_Windows)
  35.     #define ABFAR far
  36. #endif
  37.  
  38. // Definitions needed for engine.c
  39. #define NAMELEN     20
  40. #define ADDRESSLEN  40
  41. #define CITYLEN     20
  42. #define STATELEN     3
  43. #define ZIPLEN      13
  44. #define PHONELEN    21
  45. #define DATELEN     11
  46. #define COMMENTLEN  300
  47.  
  48. #define TOP         0
  49. #define BOTTOM      2
  50. #define PREV_REC    -1
  51. #define NEXT_REC    1
  52. #define RANGEERROR  2
  53. #define STRLEN      256
  54. #define MAXFILENAMELEN        256
  55. #define MAXFILETITLELEN       256
  56. #define MAXPASSLEN             30
  57. #define MAXALIAS              256
  58. #define szINTERBASE     "INTERBASE TABLE"
  59. #define szSYBASE        "SYBASE"
  60. #define szORACLE        "ORACLE"
  61. #define szPERSONAL      "Personal"
  62. #define szBUSINESS      "Business"
  63. #define NEW             1
  64. #define OPEN            2
  65. #define MAXCHARLEN      60000L
  66. #define FILEHANDLESNEEDED 40
  67.  
  68. typedef UINT (CALLBACK* FARHOOK)(HWND, UINT, WPARAM, LPARAM);
  69.  
  70. // Externs for global data
  71. extern HINSTANCE    hInst;
  72. extern HWND         hMainWnd;
  73. extern HWND         hErrorWnd;
  74. extern BOOL         NewRecMode;
  75. extern BOOL         RangeSet;
  76. extern WNDPROC      _wpOrigWndProc;
  77. extern FARHOOK      lpfnFileHook;
  78. extern UINT         iMSGFileOK;
  79. extern BOOL         bIsServer;
  80.  
  81. // Variables for table creation
  82. extern const UINT16 uNumFields; // used in engine.c
  83. extern const UINT16 uNumIndexes; // used in engine.c
  84. extern const UINT16 uNumRecs;  // Number of records to insert
  85.  
  86. // The name of the table to use and the directory of where to put it.
  87. extern const char far szTblName[];
  88. extern char far szTblDirectory[];
  89. extern char far szPrivDirectory[];
  90. extern const char far szTblType[];
  91.  
  92. // Structures used throughout the code.
  93. extern FLDDesc ABFAR fldDesc[];
  94. extern IDXDesc ABFAR idxDBDesc[];
  95. extern IDXDesc ABFAR idxIBPDDesc[];
  96.  
  97. // Variables for ENGINE.C
  98. typedef struct  {
  99.                         CHAR   FName[NAMELEN];
  100.                         CHAR   LName[NAMELEN];
  101.                         CHAR   Spouse[ADDRESSLEN];
  102.                         CHAR   Addrs1[ADDRESSLEN];
  103.                         CHAR   Addrs2[ADDRESSLEN];
  104.                         CHAR   City[CITYLEN];
  105.                         CHAR   State[STATELEN];
  106.                         CHAR   Zip[ZIPLEN];
  107.                         CHAR   Phone1[PHONELEN];
  108.                         CHAR   Phone2[PHONELEN];
  109.                         CHAR   Date1[DATELEN];
  110.                         CHAR   Comment[COMMENTLEN];
  111.                 } RecordType;
  112.  
  113. // Structures for OpenFile dialog.
  114. typedef struct
  115. {
  116.     OPENFILENAME ofn;
  117.     CHAR szFile[MAXFILENAMELEN];
  118.     CHAR szFileTitle[MAXFILETITLELEN];
  119.     CHAR szDirectory[DBIMAXPATHLEN + 1];
  120.     CHAR szTitle[DBIMAXNAMELEN];   
  121. }FOCHUNK;
  122.  
  123. typedef FOCHUNK FAR *LPFOCHUNK;
  124.  
  125. typedef struct
  126. {
  127.     CHAR    Password[MAXPASSLEN];
  128.     CHAR    Alias[DBIMAXTBLNAMELEN];
  129.     CHAR    Database[DBIMAXTBLNAMELEN];
  130. }PASSSTRUCT;
  131.  
  132. typedef struct
  133. {
  134.     phDBIDb phDb;
  135.     UINT16  uType;
  136. }ABCREATESTRUCT;
  137.  
  138. typedef ABCREATESTRUCT FAR *pCS;
  139.  
  140. typedef struct
  141. {
  142.     DBINAME         szTagName;
  143.     DBIKEYEXP       szKeyExp;
  144.     UINT16          iFldsInKey;
  145.     DBIKEY          aiKeyFld;
  146.     DBIKEY          aiKeyLen;
  147. }ABIDXDESC;
  148. typedef ABIDXDESC FAR *pABIDXDESC;
  149.  
  150. typedef struct
  151. {
  152.     phDBICur        phCur;
  153.     hDBIDb          hDb;
  154. }ABHANDLES;
  155. typedef ABHANDLES FAR *pAbHandles;
  156.  
  157. typedef struct
  158. {
  159.     CHAR            FieldName[DBIMAXNAMELEN + 2];
  160. }FIELDNAME;
  161. typedef FIELDNAME FAR *pFIELDName;
  162.  
  163. // Function prototypes for ADR_MAIN.C
  164. BOOL        InitApp(int nCmdShow);
  165. LRESULT     CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
  166. BOOL        FillStruct(RecordType *, UINT16, pCHAR);
  167. BOOL        DisplayTable(hDBICur hCur);
  168. BOOL        TableExist(pCHAR);
  169. BOOL        FillTable (hDBICur hCur, pCHAR ABType);
  170. BOOL        DispRec(RecordType *);
  171. DBIResult   MoveRec (hDBICur hCur, INT16);
  172. void        CheckButtons(hDBICur hCur);
  173. void        SetupEdits(void);
  174. BOOL        SaveRec(hDBICur hCur, BOOL);
  175. BOOL        GetRec(RecordType *);
  176. BOOL        DeleteRecord(hDBICur hCur);
  177. void        SetControl(UINT16, BOOL);
  178. UINT16      FillDropList (HWND, UINT16, UINT16, pABIDXDESC, pCHAR);
  179. void        SetFNameFocus(void);
  180. BOOL        ClearDlg(void);
  181. BOOL        Varified(void);
  182. BOOL        CanContinue(pCHAR, UINT16);
  183. void        EndNewRec(hDBICur hCur);
  184. DBIResult   SetDefaultDate (void);
  185. void        FillFieldList(HWND);
  186. void        GetField(RecordType *, pCHAR, UINT16);
  187. void        PutField(RecordType *, pCHAR, UINT);
  188. DBISearchCond      GetCond(HWND);
  189. void        FillAliasCBBox(pDBDesc pAliases, UINT32 uNumAliases,
  190.                            UINT16 CBId, HWND hWnd);
  191. BOOL        FillFileList (HWND hWnd, UINT16 LBId, hDBIDb hDb);
  192. void        SetFieldNames(hDBICur hCur);
  193. pCHAR       Proper(pCHAR String);
  194. void        SetAll(BOOL bAction);
  195. BOOL        HourGlassCursor (BOOL turnOn);
  196.  
  197. // Function prototypes for ADR_UTIL.C
  198. UINT16 WinMsg(pCHAR, UINT, UINT);
  199. void ChangeEntryMode(hDBICur hCur);
  200. int MakeFullPath(pCHAR pszDirectory, pCHAR pszRelativeDirectory);
  201.  
  202. // Functions for ENGINE.C
  203. DBIResult   DbInit(void);
  204. DBIResult   DbExit(void);
  205. DBIResult   CreateTable(hDBIDb hDb, phDBICur phCur, pCHAR);
  206. DBIResult   AddRecord(hDBICur hCur, RecordType *, BOOL);
  207. DBIResult   SetDate(pDBIDATE Date, pCHAR pszString);
  208. DBIResult   GetTable(hDBIDb hDb, phDBICur phCur);
  209. DBIResult   CloseDb(phDBIDb phDb);
  210. DBIResult   GetData(hDBICur hCur, RecordType *);
  211. DBIResult   FillRec(hDBICur hCur, pBYTE, RecordType *);
  212. DBIResult   GoTop(hDBICur hCur, BOOL bMoveRec);
  213. DBIResult   GetNextRec(hDBICur hCur);
  214. DBIResult   GetPrevRec(hDBICur hCur);
  215. DBIResult   GoBottom(hDBICur hCur, BOOL bMoveRec);
  216. DBIResult   SetIndex(phDBICur phCur, pCHAR szTagName);
  217. DBIResult   SetupIndex(phDBICur phCur, pCHAR szName, pCHAR szTagName,
  218.                        UINT16 IndexId);
  219. BOOL        AtEOF(hDBICur hCur);
  220. BOOL        AtBOF(hDBICur hCur);
  221. DBIResult   FillIndexStr(hDBICur hCur, hDBIDb hDb, pABIDXDESC *pIndexes,
  222.                          pCHAR pszActIdx, pUINT16 puIndexes);
  223. DBIResult   DeleteRec(hDBICur hCur);
  224. DBIResult   SetRange(RecordType *pHighRec, RecordType *pLowRec,
  225.                      BOOL bHighInclude, BOOL bLowInclude, hDBICur hCur,
  226.                      BOOL bHighEmpty, BOOL bLowEmpty);
  227. DBIResult   FillBuf(hDBICur hCur, pBYTE pRecBuf, RecordType* pString);
  228. DBIResult   Search(hDBICur hCur, DBISearchCond eCond, BOOL bDirect,
  229.                    UINT16 iFlds, UINT16 iLen,  RecordType *pKey);
  230. DBIResult   ResetRange(hDBICur hCur);
  231. DBIResult   DateEncode(UINT mon, UINT day, int year, pDBIDATE pTempDate);
  232. DBIResult   AdrGetDateFormat(pFMTDate pDate);
  233. DBIResult   GetDirectory(hDBIDb hDb, pCHAR pszBuffer);
  234. DBIResult   FillAliasStr(pDBDesc *Alias, pUINT32 plNumAliases);
  235. DBIResult   OpenDB(phDBIDb phDb, pCHAR pszTableType, pCHAR pszPassword,
  236.                    pCHAR pszAlias);
  237. DBIResult   DisplayError(DBIResult rslt, pCHAR* pMsg);
  238. DBIResult   GetFieldInfo(pCHAR pFld, pUINT16 FldNum, pUINT16 FldLen,
  239.                          hDBICur hCur, UINT16 iFields);
  240. void        StripChar (pCHAR Dest, pCHAR Src, CHAR Char);
  241. DBIResult   GetMdxName(hDBICur hCur, pCHAR MdxName);
  242. DBIResult   GetIndexDescs(hDBIDb hDb, pIDXDesc AllDesc);
  243. DBIResult   GetFldNames(hDBICur hCur, pFIELDName pFieldNames);
  244. DBIResult   CloseTable(phDBICur pCur);
  245. DBIResult   CheckTable(hDBICur hCur, pBOOL pbFlag);
  246. DBIResult   GetTblType(hDBICur hCur, pCHAR szTableType);
  247. DBIResult   InitIndex1(phDBICur phCur);
  248. DBIResult   GetTableList(hDBIDb hDb, phDBICur phTblCur);
  249. DBIResult   GetNextTblRec(hDBICur hTblCur, pTBLBaseDesc pbaseDesc);
  250. DBIResult   DeleteTable(phDBICur phCur, hDBIDb hDb, pCHAR TblName,
  251.                         pCHAR TblType);
  252.  
  253. // Functions for ADRCMDLG.C
  254. BOOL        FAR CALLBACK _export PasswdDlg (HWND, UINT, WPARAM, LPARAM);
  255. BOOL        FAR CALLBACK _export TypeDlg (HWND, UINT, WPARAM, LPARAM);
  256. BOOL        FAR CALLBACK _export FileHook(HWND, UINT, WPARAM, LPARAM);
  257. void        InitializeStruct(LPSTR, pCS);
  258. void        ProcessCDError(UINT32 dwErrorCode);
  259. BOOL        ChkExt(pCHAR szFileName);
  260. BOOL        IsStandard(pCHAR szAlias, pDBDesc pAliases, UINT32 uNumAliases);
  261. void        SetupDialog(HWND hDlg, INT16 Action);
  262.  
  263. // Functions for ADR_DLGS.C
  264. long        CALLBACK EditSubClassProc(HWND, UINT, WPARAM, LPARAM);
  265. BOOL        CALLBACK AboutDlg(HWND, UINT, WPARAM, LPARAM);
  266. BOOL        CALLBACK OrderDlg(HWND, UINT, WPARAM, LPARAM);
  267. BOOL        CALLBACK RangeDlg(HWND, UINT, WPARAM, LPARAM);
  268. BOOL        CALLBACK SearchDlg(HWND, UINT, WPARAM, LPARAM);
  269.  
  270.