home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / os2 / zfrms100.zip / ZFORMS.H < prev    next >
C/C++ Source or Header  |  1993-05-22  |  19KB  |  511 lines

  1. /************************* Popup Window Structures ***********************/
  2. /* Each Popup Window has a defining structure.  The structure determines */
  3. /* the characteristics of the window (size, color, etc).                 */
  4. /*************************************************************************/
  5.  
  6. /*************************************************************************/
  7. /* predefined macros to define ZForms macros.  These determine compiler  */
  8. /* build options.  __Z_SECVID__ indiactes secondary video (VioWrtCellStr)*/
  9. /* rather than VioGetBuf/VioShowBuf.  __Z_INIT_EXT__ indicates that the  */
  10. /* compiler supports unsized array definitions, with the size specified  */
  11. /* in the declaration.  Most don't.                                      */
  12. #define __Z_INIT_EXT__
  13.  
  14. #if defined __IBMC__ && defined __32BIT__
  15.    #define __Z_SECVID__
  16.    #undef __Z_INIT_EXT__
  17. #endif
  18.  
  19. #if defined __BORLANDC__
  20.    #ifdef __OS2__ 
  21.       #define __Z_SECVID__
  22.    #endif
  23.    #undef __Z_INIT_EXT__
  24. #endif
  25.  
  26. /*************************************************************************/
  27. /* True and False                                                        */
  28. #ifndef TRUE
  29.    #define TRUE 1
  30.    #define FALSE 0
  31. #endif
  32.  
  33. /* Virtual Screen Pointer - points to a virtual screen buffer */
  34. typedef int * VSP;
  35.  
  36. /* Popup window structure */
  37. struct WIN_S {
  38.      int fShown;
  39.      int Height;
  40.      int Width;
  41.      struct WIN_S * Prev;
  42.      struct WIN_S * Next;
  43.      int XOrg;
  44.      int YOrg;
  45.      int DefaultChar;
  46.      int BorderStyle;
  47.      int BorderColor;
  48.      int BorderBack;
  49.      int DropShadow;
  50.      int DropAttr;
  51.      char *Title;
  52.      char *SubTitle;
  53.      VSP pVS;
  54.      };
  55. typedef struct WIN_S WINDOW;
  56.  
  57. /* Window Border Styles */
  58. #define BS_NOBORDER     0x0
  59. #define BS_DOUBLELINE   0x1
  60. #define BS_SINGLELINE   0x2
  61.  
  62. /* Drop Shadow Styles */
  63. #define DS_NONE         0x0
  64. #define DS_LOWERRIGHT   0x1
  65. #define DS_LOWERLEFT    0x2
  66. #define DS_UPPERLEFT    0x3
  67. #define DS_UPPERRIGHT   0x4
  68.  
  69. /* Window Color Definitions */
  70. #define BLACK           0
  71. #define BLUE            1
  72. #define GREEN           2
  73. #define CYAN            3
  74. #define RED             4
  75. #define MAGENTA         5
  76. #define BROWN           6
  77. #define WHITE           7
  78. #define DARKGRAY        8
  79. #define DARKGREY        8
  80. #define LT_BLUE         9
  81. #define LT_GREEN        10
  82. #define LT_CYAN         11
  83. #define LT_RED          12
  84. #define LT_MAGENTA      13
  85. #define YELLOW          14
  86. #define BRIGHTWHITE     15
  87. #define BLINKING        16
  88.  
  89. /************************ Menu Structure ****************************/
  90. /* Each menu is made up of a structure which defines the menu text, */
  91. /* size, position, function to execute, etc.                        */
  92. /********************************************************************/
  93.  
  94. /* Menu Item Structure */
  95. typedef struct {
  96.      char * Text;            /* Menu item text */
  97.      int  Flags;             /* Menu handling flags */
  98.      int  HotKey;            /* key-stroke(s) to get selected */
  99.      int  OffsetHiLite;      /* Able to Hilite Individual Letter */
  100.      int  XOrg;              /* X position relative to the window */
  101.      int  YOrg;              /* Y position relative to the window */
  102.      void * ActionPtr;       /* Pointer to a function or another menu */
  103.      char * Hint;            /* Hint text */
  104.      } MENU_ITEM;
  105.  
  106. /* Menu Item Flags */
  107. #define MIF_USEHINT     0x1
  108. #define MIF_NOHINT      0x0
  109. #define MIF_CALLMENU    0x2
  110. #define MIF_CALLDIALOG  0x4
  111. #define MIF_CALLFUNC    0x8
  112. #define MIF_CALLEXIT    0x10
  113. #define MIF_CALLNOTHING 0x0
  114. #define MIF_RIGHTJUST   0x20
  115. #define MIF_LEFTJUST    0x0
  116. #define MIF_SUBMENU     0x40
  117. #define MIF_NOSUBMENU   0x0
  118.  
  119. /* Menu structure */
  120. typedef struct {
  121.      int OrgX;               /* Menu X origin (upper left corner) */
  122.      int OrgY;               /* Menu Y origin (upper left corner) */
  123.      int Height;             /* Window Height */
  124.      int Width;              /* Window width */
  125.      int TextWidth;          /* menu text width if vertical */
  126.      int Flags;              /* Menu flags */
  127.      int TextColor;          /* color of text */
  128.      int BackColor;          /* color of background */
  129.      int HotColor;           /* Hot key color */
  130.      int HotBack;            /* Hot key background color */
  131.      int HiTextColor;        /* color of hilighted text */
  132.      int HiBackColor;        /* color of background text */
  133.      int HintTextColor;      /* color of hint text */
  134.      int HintBackColor;      /* color of hint background */
  135.      int HintOrgX;           /* X position of the hint */
  136.      int HintOrgY;           /* Y position of the hint */
  137.      int HintWidth;          /* Width of hint text */
  138.      int BorderStyle;        /* border styles */
  139.      int BorderColor;        /* Border Color */
  140.      int BorderBack;         /* Border Background Color */
  141.      int DropShadow;         /* whether to use a drop shadow / */
  142.      int DropAttr;           /* drop shadow attribute */
  143.      char *Title;            /* Menu window border title */
  144. #ifdef __Z_INIT_EXT__
  145.      MENU_ITEM Item[];       /* Array of MENU_ITEM structures */
  146. #else
  147.      MENU_ITEM *Item;        /* Array of MENU_ITEM structures */
  148. #endif     
  149.      } MENU;
  150.  
  151. /* Flags for Menus */
  152. #define MMF_USECLOCK        0x1
  153. #define MMF_NOCLOCK         0x0
  154. #define MMF_VERTMENU        0x2
  155. #define MMF_HORIZMENU       0x0
  156. #define MMF_SUBMENU         0x4
  157. #define MMF_NOTSUBMENU      0x0
  158. #define MMF_USEHINT         0x8
  159. #define MMF_NOHINT          0x0
  160.  
  161. /********************* Dialog Box Structures ***********************/
  162. /* Dialog Boxes are made up of a Dialog Box structure and a set of */
  163. /* Control Structures.                                             */
  164. /*******************************************************************/
  165.  
  166. /* Control Structure */
  167. typedef struct {
  168.      char * Text;            /* Text for Button */
  169.      int Style;              /* Control Style */
  170.      int Flags;              /* Control flags */
  171.      int HotKey;             /* key to activate control, if any */
  172.      int OffsetHiLite;       /* Index into text for highlighted character */
  173.      int XOrg;               /* X Origin for the control */
  174.      int YOrg;               /* Y Origin for the control */
  175.      int Height;             /* Control height */
  176.      int Width;              /* Control width */
  177.      int TextColor;          /* color of text */
  178.      int TextBack;           /* color of background */
  179.      int HiTextColor;        /* color of hilighted text */
  180.      int HiBackColor;        /* color of hilighted background */
  181.      void * ActionPtr;       /* pointer to function to execute */
  182.      char * Hint;            /* Text for Hint */
  183.      int (*Validate)(void *); /* Validation function */
  184.      } DLG_CONTROL;
  185.  
  186. /* Control Style Flags */
  187. #define CSF_BUTTON          0x0
  188. #define CSF_VERTSCROLL      0x1
  189. #define CSF_HORZSCROLL      0x2
  190. #define CSF_TEXT            0x4
  191. #define CSF_DATAENTRY       0x8
  192. #define CSF_CHECKBOX        0x10
  193. #define CSF_ONEOFBUTTON     0x20
  194. #define CSF_PICKLIST        0x40
  195.  
  196. /* Control Flags */
  197. #define CSS_NOACTIVATE      0x0
  198. #define CSS_ACTIVATE        0x1
  199. #define CSS_CALLFUNC        0x2
  200. #define CSS_CALLDIALOG      0x4
  201. #define CSS_CALLMENU        0x8
  202. #define CSS_EXIT            0x10
  203. #define CSS_CALLNOTHING     0x0
  204.  
  205. /* Dialog Box Structure */
  206. typedef struct {
  207.      int XOrg;               /* X Origin for dialog box */
  208.      int YOrg;               /* Y Origin for dialog box */
  209.      int Height;             /* Height for window */
  210.      int Width;              /* Width of window */
  211.      int Flags;              /* Dialog box flags */
  212.      int DefaultChar;        /* Default character and attribute for window */
  213.      int HintTextColor;      /* Color for hint text, if any */
  214.      int HintBackColor;      /* Background color for the hint, if any */
  215.      int HintOrgX;           /* Hint window X origin */
  216.      int HintOrgY;           /* Hint window Y origin */
  217.      int HintWidth;          /* Width of hint window */
  218.      int BorderStyle;        /* Border style for window */
  219.      int BorderColor;        /* Border foreground color */
  220.      int BorderBack;         /* Border background color */
  221.      int DropShadow;         /* whether to drop shadow or not */
  222.      int DropAttr;           /* drop shadow attribute */
  223.      char *Title;            /* Pointer to Title Text */
  224.      void (*Entry)(void);    /* function to execute upon entry */
  225. #ifdef __Z_INIT_EXT__
  226.      DLG_CONTROL Control[];  /* Control array */
  227. #else     
  228.      DLG_CONTROL *Control;   /* Control array */
  229. #endif     
  230.      } DIALOG;
  231.  
  232. /* Dialog Box Flags */
  233. #define DBF_USEHINT         0x1
  234. #define DBF_NOHINT          0x0
  235.  
  236. /************************ Keyboard definitions ******************/
  237. /* This section defines all keys and keyboard functions *********/
  238. /****************************************************************/
  239.  
  240. /* Readmap to keyboard combinations */
  241. #define k_special           0xf00
  242. #define k_F1                0xf3b
  243. #define k_F2                0xf3c
  244. #define k_F3                0xf3d
  245. #define k_F4                0xf3e
  246. #define k_F5                0xf3f
  247. #define k_F6                0xf40
  248. #define k_F7                0xf41
  249. #define k_F8                0xf42
  250. #define k_F9                0xf43
  251. #define k_F10               0xf44
  252. #define k_F11               0xf85
  253. #define k_F12               0xf86
  254. #define k_Shift_F1          0xf54
  255. #define k_Shift_F2          0xf55
  256. #define k_Shift_F3          0xf56
  257. #define k_Shift_F4          0xf57
  258. #define k_Shift_F5          0xf58
  259. #define k_Shift_F6          0xf59
  260. #define k_Shift_F7          0xf5a
  261. #define k_Shift_F8          0xf5b
  262. #define k_Shift_F9          0xf5c
  263. #define k_Shift_F10         0xf5d
  264. #define k_Shift_F11         0xf87
  265. #define k_Shift_F12         0xf88
  266. #define k_Alt_F1            0xf68
  267. #define k_Alt_F2            0xf69
  268. #define k_Alt_F3            0xf6a
  269. #define k_Alt_F4            0xf6b
  270. #define k_Alt_F5            0xf6c
  271. #define k_Alt_F6            0xf6d
  272. #define k_Alt_F7            0xf6e
  273. #define k_Alt_F8            0xf6f
  274. #define k_Alt_F9            0xf70
  275. #define k_Alt_F10           0xf71
  276. #define k_Alt_F11           0xf8b
  277. #define k_Alt_F12           0xf8c
  278. #define k_Ctrl_F1           0xf5e
  279. #define k_Ctrl_F2           0xf5f
  280. #define k_Ctrl_F3           0xf60
  281. #define k_Ctrl_F4           0xf61
  282. #define k_Ctrl_F5           0xf62
  283. #define k_Ctrl_F6           0xf63
  284. #define k_Ctrl_F7           0xf64
  285. #define k_Ctrl_F8           0xf65
  286. #define k_Ctrl_F9           0xf66
  287. #define k_Ctrl_F10          0xf67
  288. #define k_Ctrl_F11          0xf89
  289. #define k_Ctrl_F12          0xf8a
  290. #define k_UpArr             0xf48
  291. #define k_DnArr             0xf50
  292. #define k_RtArr             0xf4d
  293. #define k_LtArr             0xf4b
  294. #define k_PgUp              0xf49
  295. #define k_PgDn              0xf51
  296. #define k_Home              0xf47
  297. #define k_End               0xf4f
  298. #define k_Ins               0xf52
  299. #define k_Del               0xf53
  300. #define k_Shift_UpArr       0xf48
  301. #define k_Shift_DnArr       0xf50
  302. #define k_Shift_RtArr       0xf4d
  303. #define k_Shift_LtArr       0xf4b
  304. #define k_Shift_PgUp        0xf49
  305. #define k_Shift_PgDn        0xf51
  306. #define k_Shift_Home        0xf47
  307. #define k_Shift_End         0xf4f
  308. #define k_Shift_Ins         0xf52
  309. #define k_Shift_Del         0xf53
  310. #define k_Alt_UpArr         0xf98
  311. #define k_Alt_DnArr         0xfa0
  312. #define k_Alt_RtArr         0xf9d
  313. #define k_Alt_LtArr         0xf9b
  314. #define k_Alt_PgUp          0xf99
  315. #define k_Alt_PgDn          0xfa1
  316. #define k_Alt_Home          0xf00
  317. #define k_Alt_End           0xf9f
  318. #define k_Alt_Ins           0xfa2
  319. #define k_Alt_Del           0xfa3
  320. #define k_Ctrl_UpArr        0xf8D
  321. #define k_Ctrl_DnArr        0xf91
  322. #define k_Ctrl_RtArr        0xf74
  323. #define k_Ctrl_LtArr        0xf73
  324. #define k_Ctrl_PgUp         0xf84
  325. #define k_Ctrl_PgDn         0xf76
  326. #define k_Ctrl_Home         0xf77
  327. #define k_Ctrl_End          0xf75
  328. #define k_Ctrl_Ins          0xf92
  329. #define k_Ctrl_Del          0xf93
  330. #define k_Esc               0x1b
  331. #define k_Enter             0x0d
  332. #define k_Backspace         0x08
  333. #define k_Tab               0x09
  334. #define k_Shift_Tab         0xf0f
  335. #define k_Ctrl_A            0x01
  336. #define k_Ctrl_B            0x02
  337. #define k_Ctrl_C            0x03
  338. #define k_Ctrl_D            0x04
  339. #define k_Ctrl_E            0x05
  340. #define k_Ctrl_F            0x06
  341. #define k_Ctrl_G            0x07
  342. #define k_Ctrl_H            0x08
  343. #define k_Ctrl_I            0x09
  344. #define k_Ctrl_J            0x0A
  345. #define k_Ctrl_K            0x0B
  346. #define k_Ctrl_L            0x0C
  347. #define k_Ctrl_M            0x0D
  348. #define k_Ctrl_N            0x0E
  349. #define k_Ctrl_O            0x0F
  350. #define k_Ctrl_P            0x10
  351. #define k_Ctrl_Q            0x11
  352. #define k_Ctrl_R            0x12
  353. #define k_Ctrl_S            0x13
  354. #define k_Ctrl_T            0x14
  355. #define k_Ctrl_U            0x15
  356. #define k_Ctrl_V            0x16
  357. #define k_Ctrl_W            0x17
  358. #define k_Ctrl_X            0x18
  359. #define k_Ctrl_Y            0x19
  360. #define k_Ctrl_Z            0x1A
  361. #define k_Alt_A             0xf1e
  362. #define k_Alt_B             0xf30
  363. #define k_Alt_C             0xf2e
  364. #define k_Alt_D             0xf20
  365. #define k_Alt_E             0xf12
  366. #define k_Alt_F             0xf21
  367. #define k_Alt_G             0xf22
  368. #define k_Alt_H             0xf23
  369. #define k_Alt_I             0xf17
  370. #define k_Alt_J             0xf24
  371. #define k_Alt_K             0xf25
  372. #define k_Alt_L             0xf26
  373. #define k_Alt_M             0xf32
  374. #define k_Alt_N             0xf31
  375. #define k_Alt_O             0xf18
  376. #define k_Alt_P             0xf19
  377. #define k_Alt_Q             0xf10
  378. #define k_Alt_R             0xf13
  379. #define k_Alt_S             0xf1f
  380. #define k_Alt_T             0xf14
  381. #define k_Alt_U             0xf16
  382. #define k_Alt_V             0xf2f
  383. #define k_Alt_W             0xf11
  384. #define k_Alt_X             0xf2d
  385. #define k_Alt_Y             0xf15
  386. #define k_Alt_Z             0xf2c
  387. #define k_Alt_1             0xf78
  388. #define k_Alt_2             0xf79
  389. #define k_Alt_3             0xf7a
  390. #define k_Alt_4             0xf7b
  391. #define k_Alt_5             0xf7c
  392. #define k_Alt_6             0xf7d
  393. #define k_Alt_7             0xf7e
  394. #define k_Alt_8             0xf7f
  395. #define k_Alt_9             0xf80
  396. #define k_Alt_0             0xf81
  397. #define k_NoKey             -1
  398.  
  399. /* Prompt Structure */
  400. typedef struct {
  401.      char * Response;
  402.      char * Prompt;
  403.      char * Mask;
  404.      int Length;
  405.      int XPos;
  406.      int YPos;
  407.      int PromptColor;
  408.      int PromptBack;
  409.      int ResponseColor;
  410.      int ResponseBack;
  411.      int HiColor;
  412.      int HiBack;
  413.      int (*Verify)(char *);
  414.      char *Hint;
  415.      } PROMPT;
  416.  
  417. /************************ PickList ******************************/
  418. /* This section defines the picklist pre-defined window type ****/
  419. /****************************************************************/
  420.  
  421. /* Picklist items */
  422. struct PL_ITEM {
  423.     char *ItemText;
  424.     struct PL_ITEM *Prev;
  425.     struct PL_ITEM *Next;
  426.     };
  427. typedef struct PL_ITEM PICKLIST_ITEM;
  428.  
  429. /* PickList structure */
  430. typedef struct {
  431.      int OrgX;               /* Picklist X origin (upper left corner) */
  432.      int OrgY;               /* Picklist Y origin (upper left corner) */
  433.      int Height;             /* Window Height */
  434.      int Width;              /* Window width */
  435.      int TextWidth;          /* picklist text width */
  436.      int Flags;              /* Picklist flags */
  437.      int TextColor;          /* color of text */
  438.      int BackColor;          /* color of background */
  439.      int HiTextColor;        /* color of hilighted text */
  440.      int HiBackColor;        /* color of background text */
  441.      int BorderStyle;        /* border styles */
  442.      int BorderColor;        /* Border Color */
  443.      int BorderBack;         /* Border Background Color */    
  444.      int DefaultChar;        /* default character for window */
  445.      int DropShadow;         /* whether to drop shadow the picklist */
  446.      int DropAttr;           /* the atttribute to use */
  447.      char *Title;            /* Picklist window border title */
  448.      WINDOW *pWin;           /* pointer to the window to use */
  449.      PICKLIST_ITEM *Item;    /* Head of PICKLIST_ITEM structures list */
  450.      PICKLIST_ITEM *LastItem;/* Tail of PICKLIST_ITEM structures list */
  451.     } PICKLIST;
  452.  
  453. /************************ Functions *****************************/
  454. /* This section defines externally known functions **************/
  455. /****************************************************************/
  456. /* Popup Window Functions */
  457. int Z_IsCharOnTop(WINDOW *, int, int, int);
  458. void Z_ShowWindow(WINDOW *);
  459. void Z_HideWindow(WINDOW *);
  460. void Z_UnDefineWindow(WINDOW *);
  461. WINDOW * Z_DefineWindow(WINDOW *);
  462. void Z_UpdatePhysicalScreen(WINDOW *, int, int, int, int);
  463. void Z_TextOut(WINDOW *, char *, int, int, int, int);
  464. void Z_TextOver(WINDOW *, char *, int, int);
  465. WINDOW * Z_CreateWindow(WINDOW *, int, int, int, int, int, int, int, int, int, int, char *, char *);
  466. void Z_BorderWindow(WINDOW *);
  467. void Z_ClearScreen(char, char);
  468. void Z_SetCursor(WINDOW *, int, int);
  469. WINDOW * Z_OpenWindow(WINDOW *);
  470. void Z_CloseWindow(WINDOW *);
  471. void Z_ScrollUp(WINDOW *, int);
  472. void Z_ScrollDown(WINDOW *, int);
  473. void Z_GetVideoMode(void);
  474. void Z_SetVideoMode(int, int);
  475. void Z_TitleWindow(WINDOW *);
  476. void Z_BorderWindow(WINDOW *);
  477. void Z_PopWindow(WINDOW *);
  478. void Z_PushWindow(WINDOW *);
  479. int Z_GetCharOnTop(WINDOW *, int, int);
  480.  
  481. /* Menu Functions */
  482. void Z_DisplayMenuSelection(MENU *, WINDOW *, int, int);
  483. int Z_CountMenuItems(MENU *);
  484. WINDOW * Z_InitMenu(MENU *, WINDOW *, int *);
  485. WINDOW * Z_InitHint(MENU *, WINDOW *);
  486. int Z_HandleMenu(MENU *);
  487.  
  488. /* Dialog Box Functions */
  489. int Z_HandleDialog(DIALOG *);
  490. int Z_InformUser(char *, char *, char *, char *);
  491. int Z_CountDialogItems(DIALOG *);
  492. int Z_NextActiveControl(DIALOG *, int, int);
  493. int Z_PrevActiveControl(DIALOG *, int, int);
  494.  
  495. /* Keyboard functions */
  496. int Z_GetKey(void);
  497. void Z_Delay(int);
  498. int Z_HandleInputs(WINDOW *, WINDOW *, PROMPT *, int *);
  499. int Z_SetBackgroundProcess(void (*pFunc)(void), int Milli);
  500.  
  501. /* PickList functions */
  502. void Z_PurgePickList(PICKLIST *);
  503. void Z_DestroyPickList(PICKLIST *);
  504. int Z_AddPickListItem(PICKLIST *, char *);
  505. int Z_RemovePickListItem(PICKLIST *, char *);
  506. PICKLIST_ITEM * Z_HandlePickList(PICKLIST *);
  507. void Z_OpenPickList(PICKLIST *);
  508. void Z_ClosePickList(PICKLIST *);
  509. int Z_ShowPickList(PICKLIST *, int, PICKLIST_ITEM *, PICKLIST_ITEM **);
  510. int Z_RemovePickListEntry(PICKLIST *, PICKLIST_ITEM *);
  511.