home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0040 - 0049 / ibm0040-0049 / ibm0040.tar / ibm0040 / ZINC_6.ZIP / DOSSRC.ZIP / UI_WIN.HPP < prev    next >
Encoding:
C/C++ Source or Header  |  1991-06-01  |  60.6 KB  |  1,637 lines

  1. //    Zinc Interface Library - UI_WIN.HPP
  2. //    COPYRIGHT (C) 1990, 1991.  All Rights Reserved.
  3. //    Zinc Software Incorporated.  Pleasant Grove, Utah  USA
  4.  
  5. #ifndef UI_WIN_HPP
  6. #define UI_WIN_HPP
  7. #ifndef UI_MAP_HPP
  8. #include <ui_map.hpp>
  9. #endif
  10.  
  11. #ifdef ZIL_DESIGNER
  12. #    ifndef ZIL_STORE
  13. #    define ZIL_STORE
  14. #    endif
  15. #    ifndef ZIL_LOAD
  16. #    define ZIL_LOAD
  17. #    endif
  18. #endif
  19. #ifdef ZIL_STORE
  20. #    ifndef ZIL_LOAD
  21. #    define ZIL_LOAD
  22. #    endif
  23. #endif
  24.  
  25. // ----- UI_WINDOW_OBJECT ---------------------------------------------------
  26. // ----- member functions found in WIN2.CPP & D_WIN2.CPP --------------------
  27.  
  28. const USHORT NO_HELP_CONTEXT = 0;
  29.  
  30. enum INFORMATION_REQUEST
  31. {
  32.     GET_DEFAULT_HEIGHT,
  33.     GET_DEFAULT_WIDTH,
  34.     GET_MINIMUM_HEIGHT,
  35.     GET_MINIMUM_WIDTH,
  36.     GET_MAXIMUM_HEIGHT,
  37.     GET_MAXIMUM_WIDTH,
  38.     GET_NUMBERID_OBJECT,
  39.     GET_STRINGID_OBJECT,
  40.     PRINT_INFORMATION
  41. };
  42.  
  43. // --- pre-defined number identifications ---
  44. const USHORT NUMID_BORDER            = 0xFFFF;
  45. const USHORT NUMID_MAXIMIZE            = 0xFFFE;
  46. const USHORT NUMID_MINIMIZE            = 0xFFFD;
  47. const USHORT NUMID_SYSTEM            = 0xFFFC;
  48. const USHORT NUMID_TITLE            = 0xFFFB;
  49.  
  50. const USHORT NUMID_OPT_RESTORE        = 0xFFEF;
  51. const USHORT NUMID_OPT_MOVE            = 0xFFEE;
  52. const USHORT NUMID_OPT_SIZE            = 0xFFED;
  53. const USHORT NUMID_OPT_MINIMIZE        = 0xFFEC;
  54. const USHORT NUMID_OPT_MAXIMIZE        = 0xFFEB;
  55. const USHORT NUMID_OPT_CLOSE        = 0xFFEA;
  56.  
  57. // --- woFlags ---
  58. const USHORT WOF_NO_FLAGS            = 0x0000;
  59. const USHORT WOF_JUSTIFY_CENTER        = 0x0001;    // center justify object's data
  60. const USHORT WOF_JUSTIFY_RIGHT        = 0x0002;    // right justify object's data
  61. const USHORT WOF_BORDER                = 0x0004;    // draw a border around the object
  62. const USHORT WOF_NO_ALLOCATE_DATA    = 0x0008;    // do not allocate the data buffer
  63. const USHORT WOF_VIEW_ONLY            = 0x0010;    // object can be viewed, but not edited
  64. const USHORT WOF_NO_UNANSWERED        = 0x0020;    // Prevents "Leave Unanswered" option
  65. const USHORT WOF_NO_INVALID            = 0x0040;    // Prevents "Leave Invalid" option
  66. const USHORT WOF_UNANSWERED            = 0x0080;    // Sets initial status bit to "unanswered"
  67. const USHORT WOF_INVALID            = 0x0100;    // Sets initial status bit to "invalid"
  68. const USHORT WOF_NON_FIELD_REGION    = 0x0200;    // object does not share screen space 
  69. const USHORT WOF_NON_SELECTABLE        = 0x0400;    // object cannot be selected
  70. const USHORT WOF_AUTO_CLEAR            = 0x0800;    // auto clear option for edit fields
  71.  
  72. // --- woAdvancedFlags --- 
  73. const USHORT WOAF_NO_FLAGS            = 0x0000;
  74. const USHORT WOAF_OUTSIDE_REGION    = 0x0001;    // object occupies space outside the true region
  75. const USHORT WOAF_NON_CURRENT        = 0x0002;    // object cannot be made current
  76. const USHORT WOAF_TEMPORARY            = 0x0004;    // object is only temporarily on the display
  77. const USHORT WOAF_HOT_REGION        = 0x0008;
  78. const USHORT WOAF_NO_DESTROY        = 0x0010;    // don't destroy the object
  79. const USHORT WOAF_NORMAL_HOT_KEYS    = 0x0020;    // look for hot keys on normal input.
  80. const USHORT WOAF_NO_SIZE            = 0x0040;    // object cannot be sized
  81. const USHORT WOAF_NO_MOVE            = 0x0080;    // object cannot be moved
  82. const USHORT WOAF_MODAL                = 0x0100;    // object is modal (gets all events)
  83. const USHORT WOAF_LOCKED            = 0x0200;    // object cannot be removed from the window manager
  84. const USHORT WOAF_MULTIPLE_REGIONS    = 0x0400;    // object has more than 1 region.
  85.  
  86. // --- woStatus ---
  87. const USHORT WOS_NO_STATUS            = 0x0000;
  88. const USHORT WOS_GRAPHICS            = 0x0001;    // object region is in graphics coordinates
  89. const USHORT WOS_CURRENT            = 0x0002;    // object is current
  90. const USHORT WOS_CHANGED            = 0x0004;    // object data has changed
  91. const USHORT WOS_SELECTED            = 0x0008;    // object has been selected
  92. const USHORT WOS_UNANSWERED            = 0x0010;    // object data is answered
  93. const USHORT WOS_INVALID            = 0x0020;    // object has invalid data
  94. const USHORT WOS_NO_AUTO_CLEAR        = 0x0040;    // edit keys have been used
  95.  
  96. // --- woAdvancedStatus ---
  97. const USHORT WOAS_NO_STATUS            = 0x0000;
  98. const USHORT WOAS_INVALID_REGION    = 0x0001;    // object space is invalid
  99. const USHORT WOAS_MAXIMIZED            = 0x0002;    // object is maximized
  100. const USHORT WOAS_MINIMIZED            = 0x0004;    // object is minimized
  101. const USHORT WOAS_TOO_SMALL            = 0x0008;    // sized too small to be selected
  102. const USHORT WOAS_NEED_VALIDATE        = 0x0010;    // data needs validation
  103. const USHORT WOAS_REDISPLAY            = 0x0020;    // data needs updating
  104. const USHORT WOAS_EDIT_MODE            = 0x0040;    // window is being edited
  105.  
  106. class EXPORT UI_WINDOW_OBJECT : public UI_ELEMENT
  107. {
  108.     friend class EXPORT UI_WINDOW_MANAGER;
  109.     friend class EXPORT UIW_WINDOW;
  110.  
  111. public:
  112.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  113.     static UI_EVENT_MAP *eventMapTable;
  114.     UI_PALETTE_MAP *paletteMapTable;
  115.  
  116.     USHORT woFlags, woAdvancedFlags, woStatus, woAdvancedStatus;
  117.     UI_REGION true, relative;
  118.     UI_WINDOW_OBJECT *parent;
  119.     UI_DISPLAY *display;
  120.     UI_EVENT_MANAGER *eventManager;
  121.     UI_WINDOW_MANAGER *windowManager;
  122.     UI_PALETTE *lastPalette;
  123.     int (*Validate)(void *object, int ccode);
  124.     USHORT helpContext;
  125.     UCHAR hotKey;
  126.     void *userObject;
  127.     USHORT userFlags;
  128.  
  129.     UI_WINDOW_OBJECT(int left, int top, int width, int height,
  130.         USHORT _woFlags, USHORT _woAdvancedFlags);
  131.     virtual ~UI_WINDOW_OBJECT(void);
  132.  
  133.     virtual int Event(const UI_EVENT &event);
  134.     virtual void *Information(INFORMATION_REQUEST request, void *data);
  135.     void InformationSet(SCREENID _screenID, UI_DISPLAY *_display,
  136.         UI_EVENT_MANAGER *_eventManager, UI_WINDOW_MANAGER *_windowManager,
  137.         UI_PALETTE_MAP *_paletteMapTable, UI_WINDOW_OBJECT *_parent);
  138.     int Inherited(USHORT matchID)
  139.         { return(matchID == windowID[0] || matchID == windowID[1] ||
  140.               matchID == windowID[2] || matchID == windowID[3] ||
  141.               matchID == windowID[4]); }
  142.     USHORT NumberID(USHORT numberID = 0);
  143.     int Overlap(const UI_REGION ®ion);
  144.     int Overlap(const UI_POSITION &position)
  145.         { return(position.column >= true.left &&
  146.           position.column <= true.right && position.line >= true.top &&
  147.           position.line <= true.bottom); }
  148.     void Redisplay(int fromRoot);
  149.     void RegionMax(int leftTop);
  150.     int Touching(const UI_POSITION &position)
  151.         { return(position.column == true.left || 
  152.           position.column == true.right || position.line == true.top ||
  153.           position.line == true.bottom); }
  154.     void WindowID(int position, int id) { windowID[position] = id; }
  155.     char *StringID(const char *stringID = NULL);
  156.  
  157. #ifdef ZIL_DESIGNER
  158.     virtual int Editor(const UI_EVENT &event);
  159. #endif
  160. #ifdef ZIL_LOAD
  161.     UI_WINDOW_OBJECT(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  162. #endif
  163. #ifdef ZIL_STORE
  164.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  165. #endif
  166.  
  167.     // Public members described in UI_ELEMENT reference chapter.
  168.     UI_WINDOW_OBJECT *Next(void) { return((UI_WINDOW_OBJECT *)next); }
  169.     UI_WINDOW_OBJECT *Previous(void) { return((UI_WINDOW_OBJECT *)previous); }
  170.  
  171. #ifdef ZIL_MSWINDOWS
  172.     // MS Windows specific members.
  173.     DWORD MSWindowsStyle;
  174.     HWND hWnd;
  175.     HMENU hMenu;
  176. #endif
  177.  
  178. protected:
  179.     // Protected members described in UI_WINDOW_OBJECT reference chapter.
  180.     SCREENID screenID;
  181.     int windowID[5];
  182.     UI_SEARCH_INFO search;
  183.  
  184.     USHORT markColumn;                    // Column where mouse mark initiated.
  185.     static char *pasteBuffer;            // There is only one global paste buffer.
  186.     static int pasteLength;
  187.     static USHORT repeatRate;
  188.  
  189.     void Border(int ccode, UI_REGION ®ion, const UI_PALETTE *palette);
  190.     int LogicalEvent(const UI_EVENT &event, int currentID)
  191.         { return (MapEvent(eventMapTable, event, currentID, windowID[0],
  192.           windowID[1], windowID[2], windowID[3], windowID[4])); }
  193.     UI_PALETTE *LogicalPalette(int ccode);
  194.     int NeedsUpdate(const UI_EVENT &event, int ccode);
  195.     int NeedsValidation(void);
  196.     void Shadow(UI_REGION ®ion, int depth);
  197.     void Text(char *string, int depth, int ccode, const UI_PALETTE *palette);
  198. };
  199.  
  200. extern UI_WINDOW_OBJECT *_currentObject;
  201.  
  202. // ----- UI_WINDOW_MANAGER --------------------------------------------------
  203. // ----- member functions found in WIN.CPP ----------------------------------
  204.  
  205. class EXPORT UI_WINDOW_MANAGER : public UI_LIST
  206. {
  207.     friend class EXPORT UI_ERROR_SYSTEM;
  208.     friend class EXPORT UI_HELP_SYSTEM;
  209.  
  210. public:
  211.     // Members described in UI_WINDOW_MANAGER reference chapter.
  212.     static UI_EVENT_MAP *eventMapTable;
  213.  
  214.     UI_WINDOW_MANAGER(UI_DISPLAY *display, UI_EVENT_MANAGER *eventManager,
  215.         int (*exitFunction)(UI_DISPLAY *display,
  216.             UI_EVENT_MANAGER *eventManager, UI_WINDOW_MANAGER *windowManager) = NULL);
  217.     virtual ~UI_WINDOW_MANAGER(void);
  218.     virtual int Event(const UI_EVENT &event);
  219.     UI_WINDOW_OBJECT *Get(const char *name)
  220.         { return((UI_WINDOW_OBJECT *)UI_LIST::Get(UI_WINDOW_MANAGER::FindStringID, name)); }
  221.     UI_WINDOW_OBJECT *Get(USHORT numberID)
  222.         { return((UI_WINDOW_OBJECT *)UI_LIST::Get(UI_WINDOW_MANAGER::FindNumberID, &numberID)); }
  223.     int Index(UI_ELEMENT *object) { return(UI_LIST::Index(object)); }
  224.  
  225.     // Members described in UI_LIST reference chapter.
  226.     void Add(UI_WINDOW_OBJECT *object);
  227.     UI_WINDOW_OBJECT *First(void) { return((UI_WINDOW_OBJECT *)first); }
  228.     UI_WINDOW_OBJECT *Last(void) { return((UI_WINDOW_OBJECT *)last); }
  229.     void Subtract(UI_WINDOW_OBJECT *object);
  230.     UI_WINDOW_MANAGER &operator + (UI_WINDOW_OBJECT *object) { Add(object); return(*this); }
  231.     UI_WINDOW_MANAGER &operator - (UI_WINDOW_OBJECT *object) { Subtract(object); return(*this); };
  232.  
  233. protected:
  234.     static SCREENID screenID;
  235.     UI_DISPLAY *display;
  236.     UI_EVENT_MANAGER *eventManager;
  237.     UI_WINDOW_OBJECT *errorObject;
  238.     int (*exitFunction)(UI_DISPLAY *display, UI_EVENT_MANAGER *eventManager, UI_WINDOW_MANAGER *windowManager);
  239.  
  240.     static int FindNumberID(void *object, void *matchName);
  241.     static int FindStringID(void *object, void *matchName);
  242.     void Erase(UI_WINDOW_OBJECT *object, const UI_REGION *newRegion);
  243.     void Modify(UI_WINDOW_OBJECT *object, const UI_EVENT &event);
  244.     void ToFront(UI_WINDOW_OBJECT *object, int refreshOld, int newWindow);
  245. };
  246.  
  247. // ----- UIW_BORDER ---------------------------------------------------------
  248. // ----- member functions found in BORDER.CPP & D_BORDER.CPP ----------------
  249.  
  250. #pragma warn -par
  251. class EXPORT UIW_BORDER : public UI_WINDOW_OBJECT
  252. {
  253. public:
  254.     // Public members described in UIW_BORDER reference chapter.
  255.     UIW_BORDER(void);
  256.     virtual ~UIW_BORDER(void) { }
  257.     int DataGet(void) { return (width); }
  258.     void DataSet(int width);
  259.     virtual int Event(const UI_EVENT &event);
  260.  
  261.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  262. #ifdef ZIL_DESIGNER
  263.     virtual int Editor(const UI_EVENT &event);
  264. #endif
  265. #ifdef ZIL_LOAD
  266.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  267.         { return (new UIW_BORDER); }
  268. #endif
  269. #ifdef ZIL_STORE
  270.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  271. #endif
  272.  
  273. protected:
  274.     // Public members described in UIW_BORDER reference chapter.
  275.     static int width;
  276. };
  277. #pragma warn .par
  278.  
  279. // ----- UIW_PROMPT ---------------------------------------------------------
  280. // ----- member functions found in PROMPT.CPP & D_PROMPT.CPP ----------------
  281.  
  282. class EXPORT UIW_PROMPT : public UI_WINDOW_OBJECT
  283. {
  284. public:
  285.     // Public members described in UIW_PROMPT reference chapter.
  286.     UIW_PROMPT(int left, int top, char *prompt, USHORT woFlags = WOF_NO_FLAGS);
  287.     UIW_PROMPT(int left, int top, int width, int height, char *prompt, USHORT woFlags = WOF_NO_FLAGS);
  288.     ~UIW_PROMPT(void) { delete prompt; }
  289.     const char *DataGet(void) { return prompt; }
  290.     void DataSet(char *prompt);
  291.     virtual int Event(const UI_EVENT &event);
  292.  
  293.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  294. #ifdef ZIL_DESIGNER
  295.     virtual int Editor(const UI_EVENT &event);
  296. #endif
  297. #ifdef ZIL_LOAD
  298.     UIW_PROMPT(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  299.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  300.         { return ((name || file) ? new UIW_PROMPT(name, file, loadFlags) :
  301.             new UIW_PROMPT(0, 0, "prompt:")); }
  302. #endif
  303. #ifdef ZIL_STORE
  304.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  305. #endif
  306.  
  307. protected:
  308.     // Public members described in UIW_PROMPT reference chapter.
  309.     char *prompt;
  310.     int borderWidth;
  311.     int borderHeight;
  312. };
  313.  
  314. // ----- UIW_BUTTON ---------------------------------------------------------
  315. // ----- member functions found in BUTTON.CPP & D_BUTTON.CPP ----------------
  316.  
  317. // --- btFlags ---
  318. const USHORT BTF_NO_FLAGS            = 0x0000;
  319. const USHORT BTF_NO_TOGGLE            = 0x0001;    // don't toggle (select) the button
  320. const USHORT BTF_DOWN_CLICK            = 0x0002;    // complete button action on down click
  321. const USHORT BTF_CHECK_MARK            = 0x0004;    // display a check mark when selected.
  322. const USHORT BTF_REPEAT                = 0x0008;    // repeat the down-click action
  323. const USHORT BTF_DOUBLE_CLICK        = 0x0010;    // perform the action on a double-mouse click.
  324. const USHORT BTF_AUTO_SIZE            = 0x0020;    // size according to mode of operation
  325. const USHORT BTF_NO_3D                = 0x0040;    // do not shadow button
  326.  
  327. // --- btStatus ---
  328. const USHORT BTS_NO_STATUS            = 0x0000;
  329. const USHORT BTS_DEPRESSED            = 0x0001;    // button is depressed
  330.  
  331. class EXPORT UIW_BUTTON : public UI_WINDOW_OBJECT
  332. {
  333. public:
  334.     // Public members described in UIW_BUTTON reference chapter.
  335.     USHORT btFlags;
  336.     USHORT value;
  337.     void (*userFunction)(void *object, UI_EVENT &event);
  338.  
  339.     UIW_BUTTON(int left, int top, int width, char *string,
  340.         USHORT btFlags = BTF_NO_TOGGLE | BTF_AUTO_SIZE,
  341.         USHORT woFlags = WOF_BORDER | WOF_JUSTIFY_CENTER,
  342.         void (*userFunction)(void *object, UI_EVENT &event) = NULL,
  343.         USHORT value = 0);
  344.     virtual ~UIW_BUTTON(void);
  345.     const char *DataGet(int stripString = FALSE);
  346.     void DataSet(char *string);
  347.     virtual int Event(const UI_EVENT &event);
  348.  
  349.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  350. #ifdef ZIL_DESIGNER
  351.     virtual int Editor(const UI_EVENT &event);
  352. #endif
  353. #ifdef ZIL_LOAD
  354.     UIW_BUTTON(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  355.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  356.         { return ((name || file) ? new UIW_BUTTON(name, file, loadFlags) :
  357.             new UIW_BUTTON(0, 0, 10, "button")); }
  358. #endif
  359. #ifdef ZIL_STORE
  360.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  361. #endif
  362.  
  363. protected:
  364.     // Protected members described in UIW_BUTTON reference chapter.
  365.     USHORT btStatus;
  366.     USHORT time;
  367.     int depth;
  368.     char *string;
  369.     char *getString;
  370. };
  371.  
  372. // ----- UIW_MAXIMIZE_BUTTON ------------------------------------------------
  373. // ----- member functions found in MAX.CPP & D_MAX.CPP ----------------------
  374.  
  375. #pragma warn -par
  376. class EXPORT UIW_MAXIMIZE_BUTTON : public UIW_BUTTON
  377. {
  378. public:
  379.     // Public members described in UIW_MAXIMIZE_BUTTON reference chapter.
  380.     UIW_MAXIMIZE_BUTTON(void);
  381.     virtual ~UIW_MAXIMIZE_BUTTON(void) { }
  382.     virtual int Event(const UI_EVENT &event);
  383.  
  384.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  385. #ifdef ZIL_DESIGNER
  386.     virtual int Editor(const UI_EVENT &event);
  387. #endif
  388. #ifdef ZIL_LOAD
  389.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  390.         { return (new UIW_MAXIMIZE_BUTTON); }
  391. #endif
  392. #ifdef ZIL_STORE
  393.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  394. #endif
  395.  
  396. protected:
  397.     // Protected members described in UIW_MAXIMIZE_BUTTON reference chapter.
  398.     static void MaximizeUserFunction(void *button, UI_EVENT &event)
  399.         { event.type = S_MAXIMIZE; ((UIW_BUTTON *)button)->eventManager->Put(event, Q_BEGIN); }
  400. };
  401. #pragma warn .par
  402.  
  403. // ----- UIW_MINIMIZE_BUTTON ------------------------------------------------
  404. // ----- member functions found in MIN.CPP & D_MIN.CPP ----------------------
  405.  
  406. #pragma warn -par
  407. class EXPORT UIW_MINIMIZE_BUTTON : public UIW_BUTTON
  408. {
  409. public:
  410.     // Public members described in UIW_MINIMIZE_BUTTON reference chapter.
  411.     UIW_MINIMIZE_BUTTON(void);
  412.     virtual ~UIW_MINIMIZE_BUTTON(void) { }
  413.     virtual int Event(const UI_EVENT &event);
  414.  
  415.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  416. #ifdef ZIL_DESIGNER
  417.     virtual int Editor(const UI_EVENT &event);
  418. #endif
  419. #ifdef ZIL_LOAD
  420.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  421.         { return (new UIW_MINIMIZE_BUTTON); }
  422. #endif
  423. #ifdef ZIL_STORE
  424.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  425. #endif
  426.  
  427. protected:
  428.     // Protected members described in UIW_MINIMIZE_BUTTON reference chapter.
  429.     static void MinimizeUserFunction(void *button, UI_EVENT &event)
  430.         { event.type = S_MINIMIZE; ((UIW_BUTTON *)button)->eventManager->Put(event, Q_BEGIN); }
  431. };
  432. #pragma warn .par
  433.  
  434. // ----- UIW_TITLE ----------------------------------------------------------
  435. // ----- member functions found in TITLE.CPP & D_TITLE.CPP ------------------
  436.  
  437. class EXPORT UIW_TITLE : public UIW_BUTTON
  438. {
  439. public:
  440.     // Public members described in UIW_TITLE reference chapter.
  441.     UIW_TITLE(char *title, USHORT woFlags = WOF_JUSTIFY_CENTER);
  442.     virtual ~UIW_TITLE(void) { }
  443.     void UIW_TITLE::DataSet(char *title);
  444. //    const char *UIW_TITLE::DataGet(int stripTitle);    --> inherited from UIW_BUTTON
  445.     virtual int Event(const UI_EVENT &event);
  446.  
  447.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  448. #ifdef ZIL_DESIGNER
  449.     virtual int Editor(const UI_EVENT &event);
  450. #endif
  451. #ifdef ZIL_LOAD
  452.     UIW_TITLE(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  453.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  454.         { return ((name || file) ? new UIW_TITLE(name, file, loadFlags) :
  455.             new UIW_TITLE("title")); }
  456. #endif
  457. #ifdef ZIL_STORE
  458.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  459. #endif
  460.  
  461. protected:
  462.     // Protected members described in UIW_TITLE reference chapter.
  463.     static void TitleUserFunction(void *button, UI_EVENT &event)
  464.         { event.type = S_MOVE; ((UIW_BUTTON *)button)->eventManager->Put(event, Q_BEGIN); }
  465. };
  466.  
  467. // ----- UIW_ICON -----------------------------------------------------------
  468. // ----- member functions found in ICON.CPP & D_ICON.CPP --------------------
  469.  
  470. const USHORT L_CHECK_COLOR             = 10000;
  471. const USHORT L_FLOOD_COLOR             = 10001;
  472. const USHORT S_PLACE_OBJECT            = 10002;
  473. const USHORT S_SAVE_OBJECT            = 10003;
  474. const USHORT S_EDIT_OBJECT            = 10004;
  475. const USHORT S_COMPUTE_DIRECTORY    = 10005;
  476. const USHORT S_MOVE_CURRENT            = 10006;
  477. const USHORT S_SIZE_CURRENT            = 10007;
  478. const USHORT S_GET_OBJECT            = 10008;
  479.  
  480. const USHORT ICF_NO_FLAGS            = 0x0000;
  481. const USHORT ICF_SINGLE_CLICK        = 0x0001;
  482.  
  483. const USHORT ICF_WRITE                = 0x0100;
  484. const USHORT ICF_READ                = 0x0200;
  485. const USHORT ICF_AUTO_SELECT        = 0x0400;
  486. const USHORT ICF_AUTO_ESCAPE        = 0x0800;
  487. const USHORT ICF_END                = 0x1000;
  488.  
  489. class EXPORT UIW_ICON : public UI_WINDOW_OBJECT
  490. {
  491.     friend class EXPORT UIW_WINDOW;
  492.  
  493. public:
  494.     // Public members described in UIW_ICON reference chapter.
  495.     USHORT icFlags;
  496.     void (*userFunction)(void *object, UI_EVENT &event);
  497.  
  498.     UIW_ICON(int left, int top, int bitmapWidth, int bitmapHeight,
  499.         UCHAR *bitmapArray, char *string, USHORT icFlags = ICF_NO_FLAGS,
  500.         USHORT woFlags = WOF_NO_FLAGS,
  501.         void (*userFunction)(void *object, UI_EVENT &event) = NULL,
  502.         int ratioWidth = 1, int ratioHeight = 1);
  503.     virtual ~UIW_ICON(void) { }
  504.     void DataGet(int *_bitmapWidth, int *_bitmapHeight, UCHAR **bitmapArray);
  505.     const char *DataGet(void) { return (string); }
  506.     void DataSet(int _bitmapWidth, int _bitmapHeight, UCHAR *_bitmapArray);
  507.     void DataSet(char *string);
  508.     virtual int Event(const UI_EVENT &event);
  509.  
  510.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  511. #ifdef ZIL_DESIGNER
  512.     virtual int Editor(const UI_EVENT &event);
  513. #endif
  514. #ifdef ZIL_LOAD
  515.     UIW_ICON(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  516.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  517.         { return ((name || file) ? new UIW_ICON(name, file, loadFlags) :
  518.             new UIW_ICON(0, 0, 32, 32, NULL, "window icon")); }
  519. #endif
  520. #ifdef ZIL_STORE
  521.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  522. #endif
  523.  
  524. private:
  525.     // Private UIW_ICON members are not documented.
  526.     UIW_WINDOW *window;
  527.     UI_REGION iconRegion;
  528.     UI_REGION stringRegion;
  529.  
  530.     short bitmapWidth;
  531.     short bitmapHeight;
  532.     UCHAR *bitmapArray;
  533.     USHORT lastTime;
  534.     char *string;
  535.  
  536.     static int leftColor;
  537.     static int rightColor;
  538.     int ratioWidth;
  539.     int ratioHeight;
  540. };
  541.  
  542. // ----- UIW_WINDOW ---------------------------------------------------------
  543. // ----- member functions found in WIN1.CPP & D_WIN1.CPP --------------------
  544.  
  545. class EXPORT UIW_WINDOW : public UI_WINDOW_OBJECT, public UI_LIST
  546. {
  547. public:
  548.     // Public members described in UIW_WINDOW reference chapter.
  549.     UIW_WINDOW(int left, int top, int width, int height,
  550.         USHORT woFlags = WOF_NO_FLAGS, USHORT woAdvancedFlags = WOAF_NO_FLAGS,
  551.         int helpContext = NO_HELP_CONTEXT, UIW_ICON *icon = NULL);
  552.     virtual ~UIW_WINDOW(void) { }
  553.     void Clear(void) { first = last = current = NULL; }
  554.     int Count(void) { return(UI_LIST::Count()); }
  555.     virtual int Event(const UI_EVENT &event);
  556.     static UIW_WINDOW *Generic(int left, int top, int width, int height,
  557.         char *title, UIW_ICON *icon = NULL, USHORT woFlags = WOF_NO_FLAGS,
  558.         USHORT woAdvancedFlags = WOAF_NO_FLAGS, int helpContext = NO_HELP_CONTEXT);
  559.     UI_WINDOW_OBJECT *Get(USHORT value)
  560.         { return ((UI_WINDOW_OBJECT *)UIW_WINDOW::Information(GET_NUMBERID_OBJECT, &value)); }
  561.     UI_WINDOW_OBJECT *Get(const char *name)
  562.         { return ((UI_WINDOW_OBJECT *)UIW_WINDOW::Information(GET_STRINGID_OBJECT, name)); }
  563.     virtual void *Information(INFORMATION_REQUEST request, void *data);
  564.  
  565.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  566. #ifdef ZIL_DESIGNER
  567.     virtual int Editor(const UI_EVENT &event);
  568. #endif
  569. #ifdef ZIL_LOAD
  570.     UIW_WINDOW(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  571.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  572.         { return ((name || file) ? new UIW_WINDOW(name, file, loadFlags) :
  573.             UIW_WINDOW::Generic(0, 0, 20, 6, "title")); }
  574. #endif
  575. #ifdef ZIL_STORE
  576.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  577. #endif
  578.  
  579.     // Public members described in UI_LIST reference chapter.
  580.     void Add(UI_WINDOW_OBJECT *object);
  581.     void Subtract(UI_WINDOW_OBJECT *object);
  582.     UI_WINDOW_OBJECT *First(void) { return((UI_WINDOW_OBJECT *)first); }
  583.     UI_WINDOW_OBJECT *Last(void) { return((UI_WINDOW_OBJECT *)last); }
  584.     UIW_WINDOW &operator+(UI_WINDOW_OBJECT *object) { Add(object); return(*this); }
  585.     UIW_WINDOW &operator-(UI_WINDOW_OBJECT *object) { Subtract(object); return(*this); }
  586.  
  587. protected:
  588.     // Protected members described in UIW_WINDOW reference chapter.
  589.     USHORT wnStatus;
  590.     UI_REGION_LIST regionList;
  591.     UI_WINDOW_OBJECT *errorObject;
  592.  
  593.     static int FindStatus(void *object, void *matchStatus);
  594.     static int FindNumberID(void *object, void *matchNumber);
  595.     static int FindStringID(void *object, void *matchNumber);
  596.  
  597.     void RegionsCompute(void);
  598.     UI_WINDOW_OBJECT *ToFront(UI_WINDOW_OBJECT *object, int checkCurrent);
  599.  
  600. private:
  601.     // Private UIW_WINDOW members are not documented.
  602.     UIW_ICON *icon;
  603.  
  604.     USHORT max_woAdvancedFlags;
  605.     USHORT max_woAdvancedStatus;
  606.     UI_REGION max_region;
  607.  
  608.     USHORT min_woAdvancedFlags;
  609.     USHORT min_woAdvancedStatus;
  610.     UI_REGION min_region;
  611.  
  612.     void Maximize(void);
  613.     void Minimize(void);
  614. };
  615.  
  616. // ----- UIW_POP_UP_ITEM ----------------------------------------------------
  617. // ----- member functions found in POPUP1.CPP & D_POPUP1.CPP ----------------
  618.  
  619. // --- mniFlags ---
  620. const USHORT MNIF_NO_FLAGS            = 0x0000;
  621. const USHORT MNIF_SEPARATOR            = 0x0001;    // Menu item seperator
  622. const USHORT MNIF_MAXIMIZE            = 0x0002;    // Item is tied to maximize button.
  623. const USHORT MNIF_MINIMIZE            = 0x0004;    // Item is tied to minimize button.
  624. const USHORT MNIF_MOVE                = 0x0008;    // Item is tied to moving.
  625. const USHORT MNIF_SIZE                = 0x0010;    // Item is tied to sizing.
  626. const USHORT MNIF_DUAL_MONITOR        = 0x0020;    // Item is tied to dual monitor support.
  627. const USHORT MNIF_RESTORE            = 0x0040;    // Maximize/minimize restoration.
  628. const USHORT MNIF_CLOSE                = 0x0080;    // Close the parent window.
  629.  
  630. class EXPORT UIW_POP_UP_ITEM : public UIW_BUTTON
  631. {
  632.     friend class EXPORT UIW_POP_UP_MENU;
  633.  
  634. public:
  635.     // Public members described in UIW_POP_UP_ITEM reference chapter.
  636.     USHORT mniFlags;
  637.  
  638.     UIW_POP_UP_ITEM(void);
  639.     UIW_POP_UP_ITEM(char *string, USHORT mniFlags = MNIF_NO_FLAGS,
  640.         USHORT btFlags = BTF_NO_FLAGS, USHORT woFlags = WOF_NO_FLAGS,
  641.         void (*userFunction)(void *object, UI_EVENT &event) = NULL,
  642.         USHORT value = 0);
  643.     UIW_POP_UP_ITEM(int left, int top, int width, char *string,
  644.         USHORT mniFlags = MNIF_NO_FLAGS, USHORT btFlags = BTF_NO_FLAGS,
  645.         USHORT woFlags = WOF_NO_FLAGS,
  646.         void (*userFunction)(void *object, UI_EVENT &event) = NULL,
  647.         USHORT value = 0);
  648.     virtual ~UIW_POP_UP_ITEM(void) { }
  649.     void DataSet(char *string);
  650.     virtual int Event(const UI_EVENT &event);
  651.  
  652.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  653. #ifdef ZIL_DESIGNER
  654.     virtual int Editor(const UI_EVENT &event);
  655. #endif
  656. #ifdef ZIL_LOAD
  657.     UIW_POP_UP_ITEM(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  658.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  659.         { return ((name || file) ? new UIW_POP_UP_ITEM(name, file, loadFlags) :
  660.             new UIW_POP_UP_ITEM(" item ")); }
  661. #endif
  662. #ifdef ZIL_STORE
  663.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  664. #endif
  665.  
  666.     // Public members described in UI_ELEMENT reference chapter.
  667.     UIW_POP_UP_ITEM *Next(void) { return((UIW_POP_UP_ITEM *)next); }
  668.     UIW_POP_UP_ITEM *Previous(void) { return((UIW_POP_UP_ITEM *)previous); }
  669.  
  670. private:
  671.     static void PopUpItemUserFunction(void *item, UI_EVENT &event);
  672.     void Initialize(char *string);
  673. };
  674.  
  675. // ----- UIW_POP_UP_MENU ----------------------------------------------------
  676. // ----- member functions found in POPUP.CPP & D_POPUP.CPP ------------------
  677.  
  678. // --- mnFlags ---
  679. const USHORT MNF_NO_FLAGS            = 0x0000;
  680. const USHORT MNF_SELECT_ONE            = 0x0001;
  681. const USHORT MNF_AUTO_SORT            = 0x0002;
  682. const USHORT MNF_SELECT_LEFT        = 0x0004;
  683. const USHORT MNF_SELECT_RIGHT        = 0x0008;
  684.  
  685. class EXPORT UIW_POP_UP_MENU : public UIW_WINDOW
  686. {
  687. public:
  688.     // Public members described in UIW_POP_UP_MENU reference chapter.
  689.     USHORT mnFlags;
  690.  
  691.     UIW_POP_UP_MENU(int left, int top, USHORT mnFlags = MNF_NO_FLAGS,
  692.         USHORT woFlags = WOF_BORDER, USHORT woAdvancedFlags = WOAF_NO_FLAGS);
  693.     virtual ~UIW_POP_UP_MENU(void) { }
  694.     virtual int Event(const UI_EVENT &event);
  695.     virtual void *Information(INFORMATION_REQUEST request, void *data);
  696.  
  697.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  698. #ifdef ZIL_DESIGNER
  699.     virtual int Editor(const UI_EVENT &event);
  700. #endif
  701. #ifdef ZIL_LOAD
  702.     UIW_POP_UP_MENU(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  703.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  704.         { return ((name || file) ? new UIW_POP_UP_MENU(name, file, loadFlags) :
  705.             new UIW_POP_UP_MENU(0, 0)); }
  706. #endif
  707. #ifdef ZIL_STORE
  708.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  709. #endif
  710.  
  711.     // Public members described in UI_LIST reference chapter.
  712.     UIW_POP_UP_ITEM *First(void) { return((UIW_POP_UP_ITEM *)first); }
  713.     UIW_POP_UP_ITEM *Last(void) { return((UIW_POP_UP_ITEM *)last); }
  714.  
  715. private:
  716.     // Private UIW_POP_UP_MENU members are not documented.
  717.     static int CompareFunction(void *element1, void *element2);
  718. };
  719.  
  720. // ----- UI_ITEM ------------------------------------------------------------
  721.  
  722. struct EXPORT UI_ITEM
  723. {
  724.     // Fields described in UI_ITEM reference chapter.
  725.     USHORT value;
  726.     void (*userFunction)(void *object, UI_EVENT &event);
  727.     char *string;
  728. };
  729.  
  730. // ----- UIW_PULL_DOWN_ITEM -------------------------------------------------
  731. // ----- member functions found in PLLDN1.CPP & D_PLLDN1.CPP ----------------
  732.  
  733. class EXPORT UIW_PULL_DOWN_ITEM : public UIW_BUTTON
  734. {
  735.     friend class EXPORT UIW_PULL_DOWN_MENU;
  736.  
  737. public:
  738.     // Public members described in UIW_PULL_DOWN_ITEM reference chapter.
  739.     UIW_PULL_DOWN_ITEM(char *string, USHORT mnFlags = MNF_NO_FLAGS,
  740.         void (*userFunction)(void *object, UI_EVENT &event) = NULL,
  741.         USHORT value = 0);
  742.     UIW_PULL_DOWN_ITEM(char *string, USHORT mnFlags, UI_ITEM *item);
  743.     virtual ~UIW_PULL_DOWN_ITEM(void) { }
  744.     void DataSet(char *string);
  745.     virtual int Event(const UI_EVENT &event);
  746.     virtual void *Information(INFORMATION_REQUEST request, void *data);
  747.  
  748.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  749. #ifdef ZIL_DESIGNER
  750.     virtual int Editor(const UI_EVENT &event);
  751. #endif
  752. #ifdef ZIL_LOAD
  753.     UIW_PULL_DOWN_ITEM(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  754.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  755.         { return ((name || file) ? new UIW_PULL_DOWN_ITEM(name, file, loadFlags) :
  756.             new UIW_PULL_DOWN_ITEM(" item ")); }
  757. #endif
  758. #ifdef ZIL_STORE
  759.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  760. #endif
  761.  
  762.     // Public members described in UI_LIST reference chapter.
  763.     void Add(UIW_POP_UP_ITEM *object) { menu.Add(object); }
  764.     UIW_POP_UP_ITEM *First(void) { return ((UIW_POP_UP_ITEM *)menu.First()); }
  765.     UIW_POP_UP_ITEM *Last(void) { return ((UIW_POP_UP_ITEM *)menu.Last()); }
  766.     UIW_PULL_DOWN_ITEM *Next(void) { return((UIW_PULL_DOWN_ITEM *)next); }
  767.     UIW_PULL_DOWN_ITEM *Previous(void) { return((UIW_PULL_DOWN_ITEM *)previous); }
  768.     void Subtract(UIW_POP_UP_ITEM *object) { menu.Subtract(object); }
  769.     UIW_PULL_DOWN_ITEM &operator + (UIW_POP_UP_ITEM *object) { menu.Add(object); return(*this); }
  770.     UIW_PULL_DOWN_ITEM &operator - (UIW_POP_UP_ITEM *object) { menu.Subtract(object); return(*this); }
  771.  
  772. private:
  773.     // Private UIW_PULL_DOWN_ITEM members are not documented.
  774.     UIW_POP_UP_MENU menu;
  775.  
  776.     static void PullDownUserFunction(void *button, UI_EVENT &event)
  777.         { ((UIW_PULL_DOWN_ITEM *)button)->UserFunction(event); }
  778.     void UserFunction(UI_EVENT &event);
  779. };
  780.  
  781. // ----- UIW_PULL_DOWN_MENU -------------------------------------------------
  782. // ----- member functions found in PLLDN.CPP & D_PLLDN.CPP ------------------
  783.  
  784. class EXPORT UIW_PULL_DOWN_MENU : public UIW_WINDOW
  785. {
  786. public:
  787.     // Public members described in UIW_PULL_DOWN_MENU reference chapter.
  788.     UIW_PULL_DOWN_MENU(int indentation, USHORT woFlags = WOF_BORDER | WOF_NON_FIELD_REGION,
  789.         USHORT woAdvancedFlags = WOAF_NO_FLAGS);
  790.     UIW_PULL_DOWN_MENU(int indentation, UI_ITEM *item);
  791.     virtual ~UIW_PULL_DOWN_MENU(void) { }
  792.     virtual int Event(const UI_EVENT &event);
  793.  
  794.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  795. #ifdef ZIL_DESIGNER
  796.     virtual int Editor(const UI_EVENT &event);
  797. #endif
  798. #ifdef ZIL_LOAD
  799.     UIW_PULL_DOWN_MENU(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  800.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  801.         { return ((name || file) ? new UIW_PULL_DOWN_MENU(name, file, loadFlags) :
  802.             new UIW_PULL_DOWN_MENU(0)); }
  803. #endif
  804. #ifdef ZIL_STORE
  805.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  806. #endif
  807.  
  808.     // Public members described in UI_LIST reference chapter.
  809.     UIW_PULL_DOWN_ITEM *First(void) { return((UIW_PULL_DOWN_ITEM *)first); }
  810.     UIW_PULL_DOWN_ITEM *Last(void) { return((UIW_PULL_DOWN_ITEM *)last); }
  811.  
  812. protected:
  813.     // Protected members described in UIW_PULL_DOWN_MENU reference chapter.
  814.     short indentation;
  815. };
  816.  
  817. // ----- UIW_SCROLL_BAR -----------------------------------------------------
  818. // ----- member functions found in SCROLL.CPP & D_SCROLL.CPP ----------------
  819.  
  820. // --- sbFlags ---
  821. const USHORT SBF_NO_FLAGS            = 0x0000;
  822. const USHORT SBF_CORNER                = 0x0001;
  823. const USHORT SBF_VERTICAL            = 0x0002;
  824. const USHORT SBF_HORIZONTAL            = 0x0004;
  825. const USHORT SBF_SIZE_MIDDLE        = 0x0008;
  826.  
  827. class EXPORT UIW_SCROLL_BAR : public UIW_WINDOW
  828. {
  829. public:
  830.     // Public members described in UIW_SCROLL_BAR reference chapter.
  831.     USHORT sbFlags;
  832.  
  833.     UIW_SCROLL_BAR(int left, int top, int width, int height,
  834.         USHORT sbFlags = SBF_VERTICAL, USHORT woFlags = WOF_NO_FLAGS);
  835.     virtual ~UIW_SCROLL_BAR(void) { }
  836.     virtual int Event(const UI_EVENT &event);
  837.     virtual void *Information(INFORMATION_REQUEST request, void *data);
  838.  
  839.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  840. #ifdef ZIL_DESIGNER
  841.     virtual int Editor(const UI_EVENT &event);
  842. #endif
  843. #ifdef ZIL_LOAD
  844.     UIW_SCROLL_BAR(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  845.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  846.         { return ((name || file) ? new UIW_SCROLL_BAR(name, file, loadFlags) :
  847.             new UIW_SCROLL_BAR(0, 0, 2, 2)); }
  848. #endif
  849. #ifdef ZIL_STORE
  850.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  851. #endif
  852.  
  853. protected:
  854.     // Protected members described in UIW_SCROLL_BAR reference chapter.
  855.     int current;
  856.     int maximum;
  857.     int showing;
  858.  
  859. private:
  860.     // Private UIW_SCROLL_BAR members are not documented.
  861.     UIW_BUTTON *button[5];
  862.     void CornerCompute(void);
  863.     void HorizontalCompute(int startButton, int endButton);
  864.     static void UserFunction(void *data, UI_EVENT &event);
  865.     void VerticalCompute(int startButton, int endButton);
  866. };
  867.  
  868. // ----- UIW_MATRIX ---------------------------------------------------------
  869. // ----- member functions found in MATRIX.CPP & D_MATRIX.CPP ----------------
  870.  
  871. // --- mxFlags ---
  872. const USHORT MXF_NO_FLAGS            = 0x0000;
  873. const USHORT MXF_COLUMNS_FILL        = 0x0001;
  874. const USHORT MXF_ROWS_FILL            = 0x0002;
  875. const USHORT MXF_AUTO_FILL            = 0x0004;
  876. const USHORT MXF_SELECT_ONE            = 0x0008;
  877.  
  878. class EXPORT UIW_MATRIX : public UIW_WINDOW
  879. {
  880. public:
  881.     // Public members described in UIW_MATRIX reference chapter.
  882.     USHORT mxFlags;
  883.  
  884.     UIW_MATRIX(int left, int top, int width, int height, int maxRowsColumns,
  885.         int cellWidth, int cellHeight,
  886.         int (*compareFunction)(void *element1, void *element2) = NULL, 
  887.         USHORT mxFlags = MXF_NO_FLAGS, USHORT woFlags = WOF_BORDER,
  888.         USHORT woAdvancedFlags = WOAF_NO_FLAGS);
  889.     UIW_MATRIX(int left, int top, int width, int height, USHORT flagSetting,
  890.         UI_ITEM *item);
  891.     virtual ~UIW_MATRIX(void) { }
  892.     void DataClear(void) { UI_LIST::Destroy(); }
  893.     virtual int Event(const UI_EVENT &event);
  894.     virtual void *Information(INFORMATION_REQUEST request, void *data);
  895.  
  896.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  897. #ifdef ZIL_DESIGNER
  898.     virtual int Editor(const UI_EVENT &event);
  899. #endif
  900. #ifdef ZIL_LOAD
  901.     UIW_MATRIX(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  902.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  903.         { return ((name || file) ? new UIW_MATRIX(name, file, loadFlags) :
  904.             new UIW_MATRIX(0, 0, 10, 4, 10, 10, 1)); }
  905. #endif
  906. #ifdef ZIL_STORE
  907.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  908. #endif
  909.  
  910. protected:
  911.     // Protected members described in UIW_MATRIX reference chapter.
  912.     short maxRowsColumns;
  913.     short cellWidth;
  914.     short cellHeight;
  915. };
  916.  
  917. // ----- UIW_SYSTEM_BUTTON --------------------------------------------------
  918. // ----- member functions found in SYS.CPP & D_SYS.CPP ----------------------
  919.  
  920. class EXPORT UIW_SYSTEM_BUTTON : public UIW_BUTTON
  921. {
  922. public:
  923.     // Public members described in UIW_SYSTEM_BUTTON reference chapter.
  924.     UIW_SYSTEM_BUTTON(void);
  925.     virtual ~UIW_SYSTEM_BUTTON(void) { }
  926.     virtual int Event(const UI_EVENT &event);
  927.     static UIW_SYSTEM_BUTTON *Generic(void);
  928.     virtual void *Information(INFORMATION_REQUEST request, void *data);
  929.     void UserFunction(UI_EVENT &event);
  930.  
  931.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  932. #ifdef ZIL_DESIGNER
  933.     virtual int Editor(const UI_EVENT &event);
  934. #endif
  935. #ifdef ZIL_LOAD
  936.     UIW_SYSTEM_BUTTON(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  937.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  938.         { return ((name || file) ? new UIW_SYSTEM_BUTTON(name, file, loadFlags) :
  939.             UIW_SYSTEM_BUTTON::Generic()); }
  940. #endif
  941. #ifdef ZIL_STORE
  942.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  943. #endif
  944.  
  945.     // Public members described in UI_LIST reference chapter.
  946.     UIW_SYSTEM_BUTTON &operator+(UI_WINDOW_OBJECT *object)
  947.         { menu.Add(object);
  948.           btFlags |= BTF_DOWN_CLICK;
  949.           return (*this); }
  950.     UIW_SYSTEM_BUTTON &operator-(UI_WINDOW_OBJECT *object)
  951.         { menu.Subtract(object);
  952.           if (!menu.First()) btFlags &= ~BTF_DOWN_CLICK;
  953.           return (*this); }
  954.  
  955. protected:
  956.     // Protected members described in UIW_SYSTEM_BUTTON reference chapter.
  957.     UIW_POP_UP_MENU menu;
  958.  
  959. private:
  960.     // Private UIW_SCROLL_BAR members are not documented.
  961.     static void SystemUserFunction(void *button, UI_EVENT &event)
  962.         { ((UIW_SYSTEM_BUTTON *)button)->UserFunction(event); }
  963. };
  964.  
  965. // ----- UIW_STRING ---------------------------------------------------------
  966. // ----- member functions found in STRING*.CPP & D_STRING.CPP ---------------
  967.  
  968. // --- stFlags ---
  969. const USHORT STF_NO_FLAGS            = 0x0000;
  970. const USHORT STF_VARIABLE_NAME        = 0x0001;
  971. const USHORT STF_LOWER_CASE            = 0x0002;
  972. const USHORT STF_UPPER_CASE            = 0x0003;
  973. const USHORT STF_PASSWORD            = 0x0004;
  974.  
  975. class EXPORT UIW_STRING : public UI_WINDOW_OBJECT
  976. {
  977. public:
  978.     // Public members described in UIW_STRING reference chapter.
  979.     USHORT stFlags;
  980.     int insertMode;
  981.  
  982.     UIW_STRING(int left, int top, int width, char *text, short _maxLength,
  983.         USHORT stFlags = STF_NO_FLAGS,
  984.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  985.         int (*validate)(void *object, int ccode) = NULL);
  986.     virtual ~UIW_STRING(void);
  987.     const char *DataGet(void) { return text; }
  988.     void DataSet(char *newText, short _maxLength = -1);
  989.     virtual int Event(const UI_EVENT &event);
  990.  
  991.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  992. #ifdef ZIL_DESIGNER
  993.     virtual int Editor(const UI_EVENT &event);
  994. #endif
  995. #ifdef ZIL_LOAD
  996.     UIW_STRING(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  997.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  998.         { return ((name || file) ? new UIW_STRING(name, file, loadFlags) :
  999.             new UIW_STRING(0, 0, 10, "", 10)); }
  1000. #endif
  1001. #ifdef ZIL_STORE
  1002.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  1003. #endif
  1004.  
  1005. protected:
  1006.     // Protected members described in UIW_STRING reference chapter.
  1007.     char *text;
  1008.     int fieldWidth;
  1009.  
  1010. #ifdef ZIL_MSWINDOWS
  1011.     short maxLength;
  1012. #else
  1013.     char *screenTop;
  1014.     char *textNull;
  1015.     char *textTail;
  1016.     char *markedBlock;
  1017.     char *markStart;
  1018.     char *markTail;
  1019.     char *cursor;
  1020.     int originalWidth;
  1021.     char *screen;
  1022.     int screenInvalid;
  1023.     short screenSize;
  1024.     char *screenMarkStart;
  1025.     char *screenMarkTail;
  1026.  
  1027.     void BackspaceKey(void);
  1028.     int CalcLeading(int width);
  1029.     void CheckLeftScroll(void);
  1030.     void CheckRightScroll(void);
  1031.     void CopyBlock(void);
  1032.     void DeleteBlock(char *block, USHORT length);
  1033.     void DeleteEol(void);
  1034.     void DeleteWord(void);
  1035.     void InsertBlock(char *insertPoint, char *block, USHORT length);
  1036.     void LeftArrow(void);
  1037.     void MoveOperation(void) { woStatus |= WOS_NO_AUTO_CLEAR; }
  1038.     int NonWhiteSpace(int value) { return (value && value != ' '); }
  1039.     void PasteBlock(void);
  1040.     void Redisplay(int ccode);
  1041.     void RegularKey(USHORT key);
  1042.     void ReplaceChar(char *buff, USHORT key);
  1043.     void SetMark(void);
  1044.     void UpdateCursor(UI_REGION ®ion, int width);
  1045.     int VerticalCenterOffset(UI_REGION *region);
  1046.     int WhiteSpace(int value) { return (value == ' '); }
  1047.     void WordTabLeft(void);
  1048. #endif
  1049. };
  1050.  
  1051. // ----- UIW_DATE -----------------------------------------------------------
  1052. // ----- member functions found in DATE*.CPP & D_DATE.CPP -------------------
  1053.  
  1054. class EXPORT UIW_DATE : public UIW_STRING
  1055. {
  1056. public:
  1057.     // Public members described in UIW_DATE reference chapter.
  1058.     USHORT dtFlags;
  1059.  
  1060.     UIW_DATE(int left, int top, int width, UI_DATE *date, 
  1061.         const char *range = NULL, USHORT dtFlags = DTF_NO_FLAGS,
  1062.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1063.         int (*validate)(void *object, int ccode) = NULL);
  1064.     virtual ~UIW_DATE(void);
  1065.     const UI_DATE *DataGet(void) { return (date); }
  1066.     void DataSet(UI_DATE *newDate);
  1067.     virtual int Event(const UI_EVENT &event);
  1068.  
  1069.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  1070. #ifdef ZIL_DESIGNER
  1071.     virtual int Editor(const UI_EVENT &event);
  1072. #endif
  1073. #ifdef ZIL_LOAD
  1074.     UIW_DATE(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  1075.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  1076.         { return ((name || file) ? new UIW_DATE(name, file, loadFlags) :
  1077.             new UIW_DATE(0, 0, 10, NULL, "")); }
  1078. #endif
  1079. #ifdef ZIL_STORE
  1080.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  1081. #endif
  1082.  
  1083. protected:
  1084.     // Members described in UIW_DATE reference chapter.
  1085.     UI_DATE *date;
  1086.     char *range;
  1087.  
  1088.     void DateError(int errorCode);
  1089.     int DateRangeCheck(void);
  1090.     void DateRangeError(char *formattedString);
  1091. };
  1092.  
  1093. // ----- UIW_TIME -----------------------------------------------------------
  1094. // ----- member functions found in TIME*.CPP & D_TIME.CPP -------------------
  1095.  
  1096. class EXPORT UIW_TIME : public UIW_STRING
  1097. {
  1098. public:
  1099.     // Members described in UIW_TIME reference chapter.
  1100.     USHORT tmFlags;
  1101.  
  1102.     UIW_TIME(int left, int top, int width, UI_TIME *time,
  1103.         const char *range = NULL, USHORT tmFlags = TMF_NO_FLAGS,
  1104.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1105.         int (*validate)(void *object, int ccode) = NULL);
  1106.     virtual ~UIW_TIME(void);
  1107.     const UI_TIME *DataGet(void) { return (time); }
  1108.     void DataSet(UI_TIME *time);
  1109.     virtual int Event(const UI_EVENT &event);
  1110.  
  1111.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  1112. #ifdef ZIL_DESIGNER
  1113.     virtual int Editor(const UI_EVENT &event);
  1114. #endif
  1115. #ifdef ZIL_LOAD
  1116.     UIW_TIME(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  1117.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  1118.         { return ((name || file) ? new UIW_TIME(name, file, loadFlags) :
  1119.             new UIW_TIME(0, 0, 10, NULL, "")); }
  1120. #endif
  1121. #ifdef ZIL_STORE
  1122.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  1123. #endif
  1124.  
  1125. protected:
  1126.     // Members described in UIW_TIME reference chapter.
  1127.     UI_TIME *time;
  1128.     char *range;
  1129.  
  1130.     void TimeError(int errorCode);
  1131.     int TimeRangeCheck(void);
  1132.     void TimeRangeError(char *formattedString);
  1133. };
  1134.  
  1135. // ----- UIW_TEXT -----------------------------------------------------------
  1136. // ----- member functions found in TEXT*.CPP & D_TEXT.CPP -------------------
  1137.  
  1138. // --- txFlags ---
  1139. const USHORT TXF_NO_FLAGS = 0x0000;
  1140. const USHORT TXF_NO_WORD_WRAP = 0x0001;
  1141.  
  1142. class EXPORT UIW_TEXT : public UIW_STRING
  1143. {
  1144. public:
  1145.     // Members described in UIW_TEXT reference chapter.
  1146.     USHORT txFlags;
  1147.  
  1148.     UIW_TEXT(int left, int top, int width, int height, char *text,
  1149.         short maxLength, USHORT txFlags = TXF_NO_FLAGS,
  1150.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1151.         int (*validate)(void *object, int ccode) = NULL);
  1152.     virtual ~UIW_TEXT(void) { }
  1153.     const char *DataGet(void) { return text; }
  1154.     void DataSet(char *newText, short maxLength = -1);
  1155.     virtual int Event(const UI_EVENT &event);
  1156.  
  1157.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  1158. #ifdef ZIL_DESIGNER
  1159.     virtual int Editor(const UI_EVENT &event);
  1160. #endif
  1161. #ifdef ZIL_LOAD
  1162.     UIW_TEXT(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  1163.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  1164.         { return ((name || file) ? new UIW_TEXT(name, file, loadFlags) :
  1165.             new UIW_TEXT(0, 0, 10, 4, "", 10)); }
  1166. #endif
  1167. #ifdef ZIL_STORE
  1168.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  1169. #endif
  1170.  
  1171. protected:
  1172.     // Protected members described in UIW_TEXT reference chapter.
  1173.     short cellHeight;
  1174.     short cellWidth;
  1175.     short width;
  1176.     short height;
  1177.  
  1178. #ifndef ZIL_MSWINDOWS
  1179.     short cursorRow;
  1180.     short cursorCol;
  1181.     short cursorDesiredCol;
  1182.     short pixelBorder;
  1183.  
  1184.     char *AdvanceColumns(char *ptr,    int num_cols, int *result_col);
  1185.     void BackspaceKey(void);
  1186.     void ComputeMousePosition(int mouse_col, int mouse_row);
  1187.     void ComputeRegion(int ccode, UI_REGION ®ion, UI_PALETTE *palette);
  1188.     void ComputeScroll(void);
  1189.     void CopyBlock(void);
  1190.     void DeleteBlock(char *block, USHORT length);
  1191.     void DeleteEol(void);
  1192.     void DeleteWord(void);
  1193.     void EnterKey(void);
  1194.     void Home(void);
  1195.     void InsertBlock(char *insertPoint, char *block, USHORT length);
  1196.     int LastLine(void);
  1197.     void LeftArrow(void);
  1198.     void MoveDown(USHORT numLines, int ccode);
  1199.     void MoveUp(USHORT numLines, int ccode);
  1200.     void PasteBlock(void);
  1201.     char *PreviousLine(char *line, USHORT num_lines, int col, char *base);
  1202.     void Redisplay(UI_REGION ®ion, int ccode);
  1203.     void RegularKey(USHORT key);
  1204.     void ReplaceChar(char *buff, USHORT key);
  1205.     void UpdateCursor(UI_REGION ®ion);
  1206.     void WordTabLeft(void);
  1207. #endif
  1208. };
  1209.  
  1210. // ----- UI_FORMATTED_STRING ------------------------------------------------
  1211. // ----- member functions found in FMTSTR.CPP & D_FMTSTR.CPP ----------------
  1212.  
  1213. class EXPORT UIW_FORMATTED_STRING : public UI_WINDOW_OBJECT
  1214. {
  1215. public:
  1216.     // Members described in UIW_FORMATTED_STRING reference chapter.
  1217.     UIW_FORMATTED_STRING(int left, int top, int width, char *text,
  1218.         char *editMask, char *literalMask, USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1219.         int (*validate)(void *object, int ccode) = NULL);
  1220.     virtual ~UIW_FORMATTED_STRING(void);
  1221.     const char *DataGet(void) { return state.text; }
  1222.     void DataSet(char *newText);
  1223.     virtual int Event(const UI_EVENT &event);
  1224.  
  1225.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  1226. #ifdef ZIL_DESIGNER
  1227.     virtual int Editor(const UI_EVENT &event);
  1228. #endif
  1229. #ifdef ZIL_LOAD
  1230.     UIW_FORMATTED_STRING(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  1231.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  1232.         { return ((name || file) ? new UIW_FORMATTED_STRING(name, file, loadFlags) :
  1233.             new UIW_FORMATTED_STRING(0, 0, 10, "****", "AAAA", "****")); }
  1234. #endif
  1235. #ifdef ZIL_STORE
  1236.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  1237. #endif
  1238.  
  1239. protected:
  1240.     // Members described in UIW_FORMATTED_STRING reference chapter.
  1241.     class EXPORT FS_STATE
  1242.     {
  1243.     public:
  1244.         int isMarked;
  1245.         UCHAR cursor;
  1246.         char *text;
  1247.  
  1248.         FS_STATE(void) : isMarked(FALSE), cursor(0), text(NULL) { }
  1249.         FS_STATE(FS_STATE& src);
  1250.         ~FS_STATE(void) { if (text) delete text; }
  1251.  
  1252.         void operator = (FS_STATE& src);
  1253.         int operator == (FS_STATE& rightOperand);
  1254.         int operator != (FS_STATE& rightOperand);
  1255.     };
  1256.  
  1257.     UCHAR fieldWidth;
  1258.     UCHAR maskLen;
  1259.     char *editMask;
  1260.     char *literalMask;
  1261.     FS_STATE state;
  1262.  
  1263.     void BackspaceKey(void);
  1264.     int CalcLeading(int width, char *dText);
  1265.     void CopyBlock(void);
  1266.     void CutBlock(void);
  1267.     void DeleteKey(void);
  1268.     int Expand(char *expandedText);
  1269.     int ExpandedColumn(void);
  1270.     void FixText(void);
  1271.     void PasteBlock(void);
  1272.     void Redisplay(UI_REGION ®ion, short width, char *dText);
  1273.     void RegularKey(USHORT key);
  1274.     void SetCursor(int column, int width);
  1275.     int TextLength(void);
  1276.     void UpdateCursor(UI_REGION ®ion, int width, char *dText, int cursorColumn);
  1277.     int ValidateMask(int editValue, int textValue);
  1278. };
  1279.  
  1280. // ----- UIW_NUMBER ---------------------------------------------------------
  1281. // ----- member functions found in NUM*.CPP, INT.CPP, REAL.CPP, -------------
  1282.  
  1283. #define    NUM_MAX_TEXT_LEN        25
  1284. #define    NMF_DECIMAL_FLAGS        0x000F
  1285.  
  1286. // --- nmFlags ---
  1287. #define    NMF_DECIMAL(num)    (((num & 0xF) + 1))
  1288. const USHORT NMF_NO_FLAGS            = 0x0000;
  1289. const USHORT NMF_DECIMAL_FLOAT        = 0x000F;
  1290. const USHORT NMF_CURRENCY            = 0x0010;    // Currency symbol
  1291. const USHORT NMF_CREDIT                = 0x0020;    // Credit symbols on negative numbers.
  1292. const USHORT NMF_COMMAS                = 0x0040;    // Commas
  1293. const USHORT NMF_PERCENT            = 0x0080;    // Percent
  1294. const USHORT NMF_SCIENTIFIC            = 0x0100;    // Scientific notation
  1295. const USHORT NMF_UNSIGNED            = 0x0200;
  1296.  
  1297. class EXPORT UIW_NUMBER : public UI_WINDOW_OBJECT
  1298. {
  1299. public:
  1300.     // Public members described in UIW_NUMBER reference chapter.
  1301.     USHORT nmFlags;
  1302.     int insertMode;
  1303.  
  1304.     UIW_NUMBER(int left, int top, int width, char *value,
  1305.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1306.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1307.         int (*validate)(void *object, int ccode) = NULL);
  1308.     UIW_NUMBER(int left, int top, int width, unsigned char *value, 
  1309.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1310.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1311.         int (*validate)(void *object, int ccode) = NULL);
  1312.     UIW_NUMBER(int left, int top, int width, short *value,
  1313.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1314.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1315.         int (*validate)(void *object, int ccode) = NULL);
  1316.     UIW_NUMBER(int left, int top, int width, unsigned short *value,
  1317.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1318.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1319.         int (*validate)(void *object, int ccode) = NULL);
  1320.     UIW_NUMBER(int left, int top, int width, int *value,
  1321.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1322.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1323.         int (*validate)(void *object, int ccode) = NULL);
  1324.     UIW_NUMBER(int left, int top, int width, unsigned int *value, 
  1325.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1326.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1327.         int (*validate)(void *object, int ccode) = NULL);
  1328.     UIW_NUMBER(int left, int top, int width, long *value,
  1329.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1330.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1331.         int (*validate)(void *object, int ccode) = NULL);
  1332.     UIW_NUMBER(int left, int top, int width, unsigned long *value, 
  1333.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1334.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1335.         int (*validate)(void *object, int ccode) = NULL);
  1336.     UIW_NUMBER(int left, int top, int width, float *value,
  1337.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1338.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1339.         int (*validate)(void *object, int ccode) = NULL);
  1340.     UIW_NUMBER(int left, int top, int width, double *value,
  1341.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1342.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1343.         int (*validate)(void *object, int ccode) = NULL);
  1344.     virtual ~UIW_NUMBER(void);
  1345.     void DataSet(void *value);
  1346.     const void *DataGet(void) { return value; }
  1347.     virtual int Event(const UI_EVENT &event);
  1348.  
  1349. protected:
  1350.     // Protected members described in UIW_NUMBER reference chapter.
  1351.     enum NUM_TYPE
  1352.     {
  1353.         NUM_CHAR,
  1354.         NUM_SHORT,
  1355.         NUM_LONG,
  1356.         NUM_FLOAT,
  1357.         NUM_DOUBLE
  1358.     };
  1359.  
  1360.     class EXPORT NUM_STATE
  1361.     {
  1362.     public:
  1363.         UCHAR isNegative;
  1364.         UCHAR isMarked;
  1365.         UCHAR cursor;                // Index to cursor position.
  1366.         char text[NUM_MAX_TEXT_LEN];
  1367.  
  1368.         int operator == (NUM_STATE& rightOperand);
  1369.         int operator != (NUM_STATE& rightOperand);
  1370.     };
  1371.  
  1372.     NUM_STATE state;
  1373.     UCHAR maxTextLen;
  1374.     UCHAR decimal;                // 0 = none, 0xFF = floating
  1375.     UCHAR type;
  1376.     void *value;
  1377.     char *range;
  1378.     void (UIW_NUMBER::*BinaryToAscii)(void);
  1379.     void (UIW_NUMBER::*AsciiToBinary)(void);
  1380.     int (UIW_NUMBER::*ValidNumber)(void);
  1381.     UCHAR switchedToReplaceMode;
  1382.  
  1383.     void AsciiToReal(void);
  1384.     void AsciiToWhole(void);
  1385.     void BackspaceKey(void);
  1386.     int CalcLeading(int width, char *dText);
  1387.     void Constructor(void *value, int width, USHORT flags, char *_range, 
  1388.         void (UIW_NUMBER::*BinaryToAscii)(),
  1389.         void (UIW_NUMBER::*AsciiToBinary)(),
  1390.         int (UIW_NUMBER::*ValidNumber)(),
  1391.         int (*validate)(void *object, int ccode) = 0);
  1392.     void CopyBlock(void);
  1393.     void CutBlock(void);
  1394.     void DeleteChar(void);
  1395.     void Expand(char *expText, int *cursorColumn);
  1396.     static void FixNegative(char *buffer, int credit);
  1397.     void FixText(void);
  1398.     void FormatNumber(void);
  1399.     void FormatNumericBuffer(char *buffer, UCHAR maximumLength);
  1400.     int ParseRange(char *buffer, int offset, char *minValue, char *maxValue);
  1401.     void PasteBlock(void);
  1402.     static void PlaceCommas(char *buffer);
  1403.     static void PlaceDecimal(char *buffer, int decimal);
  1404.     int RangeError(char *range);
  1405.     void RealToAscii(void);
  1406.     void Redisplay(UI_REGION ®ion, int width, char *dText);
  1407.     void RegularChar(USHORT key);
  1408.     void RegularKey(USHORT key);
  1409.     void SetCursor(int column, int width);
  1410.     void ShiftDecimal(int shiftCount);
  1411.     void UpdateCursor(UI_REGION ®ion, int width, char *dText, int cursorColumn);
  1412.     static int ValidNumChar(char value, int decimalPoint);
  1413.     int ValidWhole(void);
  1414.     int ValidWholeInRange(char *range);
  1415.     int ValidWholeBetween(char *minValue, char *maxValue);
  1416.     int ValidRealBetween(char *minValue, char *maxValue);
  1417.     int ValidRealInRange(char *_range);
  1418.     int ValidRealNumber(void);
  1419.     int ValidWholeNumber(void);
  1420.     void WholeToAscii(void);
  1421.  
  1422. #ifdef ZIL_DESIGNER
  1423.     virtual int Editor(const UI_EVENT &event) { return (UI_WINDOW_OBJECT::Editor(event)); }
  1424. #endif
  1425. #ifdef ZIL_LOAD
  1426.     UIW_NUMBER(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS) :
  1427.         UI_WINDOW_OBJECT(name, file, loadFlags) { }
  1428. #endif
  1429. #ifdef ZIL_STORE
  1430.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS)
  1431.         { UI_WINDOW_OBJECT::Store(name, file, storeFlags); }
  1432. #endif
  1433. };
  1434.  
  1435. // ----- UIW_INTEGER --------------------------------------------------------
  1436. // ----- member functions found in D_INT.CPP --------------------------------
  1437.  
  1438. class EXPORT UIW_INTEGER : public UIW_NUMBER
  1439. {
  1440. public:
  1441.     UIW_INTEGER(int left, int top, int width, char *value,
  1442.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1443.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1444.         int (*validate)(void *object, int ccode) = NULL) :
  1445.         UIW_NUMBER(left, top, width, value, range, nmFlags, woFlags, validate) { }
  1446.     UIW_INTEGER(int left, int top, int width, unsigned char *value, 
  1447.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1448.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1449.         int (*validate)(void *object, int ccode) = NULL) :
  1450.         UIW_NUMBER(left, top, width, value, range, nmFlags, woFlags, validate) { }
  1451.     UIW_INTEGER(int left, int top, int width, short *value,
  1452.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1453.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1454.         int (*validate)(void *object, int ccode) = NULL) :
  1455.         UIW_NUMBER(left, top, width, value, range, nmFlags, woFlags, validate) { }
  1456.     UIW_INTEGER(int left, int top, int width, unsigned short *value,
  1457.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1458.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1459.         int (*validate)(void *object, int ccode) = NULL) :
  1460.         UIW_NUMBER(left, top, width, value, range, nmFlags, woFlags, validate) { }
  1461.     UIW_INTEGER(int left, int top, int width, int *value,
  1462.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1463.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1464.         int (*validate)(void *object, int ccode) = NULL) :
  1465.         UIW_NUMBER(left, top, width, (short *)value, range, nmFlags, woFlags, validate) { }
  1466.     UIW_INTEGER(int left, int top, int width, unsigned int *value,
  1467.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1468.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1469.         int (*validate)(void *object, int ccode) = NULL) :
  1470.         UIW_NUMBER(left, top, width, (unsigned short *)value, range, nmFlags, woFlags, validate) { }
  1471.     UIW_INTEGER(int left, int top, int width, long *value,
  1472.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1473.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1474.         int (*validate)(void *object, int ccode) = NULL) :
  1475.         UIW_NUMBER(left, top, width, value, range, nmFlags, woFlags, validate) { }
  1476.     UIW_INTEGER(int left, int top, int width, unsigned long *value, 
  1477.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1478.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1479.         int (*validate)(void *object, int ccode) = NULL) :
  1480.         UIW_NUMBER(left, top, width, value, range, nmFlags, woFlags, validate) { }
  1481.  
  1482.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  1483. #ifdef ZIL_DESIGNER
  1484.     virtual int Editor(const UI_EVENT &event);
  1485. #endif
  1486. #ifdef ZIL_LOAD
  1487.     UIW_INTEGER(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  1488.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  1489.         { short sValue = 0; return ((name || file) ? new UIW_INTEGER(name, file, loadFlags) :
  1490.             new UIW_INTEGER(0, 0, 10, &sValue)); }
  1491. #endif
  1492. #ifdef ZIL_STORE
  1493.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  1494. #endif
  1495. };
  1496.  
  1497. // ----- UIW_REAL -----------------------------------------------------------
  1498. // ----- member functions found in D_REAL.CPP -------------------------------
  1499.  
  1500. class EXPORT UIW_REAL : public UIW_NUMBER
  1501. {
  1502. public:
  1503.     UIW_REAL(int left, int top, int width, float *value,
  1504.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1505.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1506.         int (*validate)(void *object, int ccode) = NULL) :
  1507.         UIW_NUMBER(left, top, width, value, range, nmFlags, woFlags, validate) { }
  1508.     UIW_REAL(int left, int top, int width, double *value,
  1509.         char *range = NULL, USHORT nmFlags = MNF_NO_FLAGS,
  1510.         USHORT woFlags = WOF_BORDER | WOF_AUTO_CLEAR,
  1511.         int (*validate)(void *object, int ccode) = NULL) :
  1512.         UIW_NUMBER(left, top, width, value, range, nmFlags, woFlags, validate) { }
  1513.  
  1514.     // Public members described in UI_WINDOW_OBJECT reference chapter.
  1515. #ifdef ZIL_DESIGNER
  1516.     virtual int Editor(const UI_EVENT &event);
  1517. #endif
  1518. #ifdef ZIL_LOAD
  1519.     UIW_REAL(const char *name, UI_STORAGE *file = NULL, USHORT loadFlags = L_NO_FLAGS);
  1520.     static UI_WINDOW_OBJECT *New(const char *name, UI_STORAGE *file, USHORT loadFlags)
  1521.         { float fValue = 0.0; return ((name || file) ? new UIW_REAL(name, file, loadFlags) :
  1522.             new UIW_REAL(0, 0, 10, &fValue)); }
  1523. #endif
  1524. #ifdef ZIL_STORE
  1525.     virtual void Store(const char *name, UI_STORAGE *file = NULL, USHORT storeFlags = S_NO_FLAGS);
  1526. #endif
  1527. };
  1528.  
  1529. // ----- UI_JUMP_ELEMENT & UI_JUMP_LIST -------------------------------------
  1530. // ----- member functions found in JUMP.CPP ---------------------------------
  1531.  
  1532. #if defined(ZIL_LOAD) | defined(ZIL_STORE)
  1533. extern class EXPORT UI_WINDOW_OBJECT;
  1534. class EXPORT UI_JUMP_ELEMENT : public UI_ELEMENT
  1535. {
  1536. public:
  1537.     char name[32];
  1538.     char codeName[32];
  1539.     int type;
  1540.     int used;
  1541.     UI_WINDOW_OBJECT *(*newFunction)(const char *name, UI_STORAGE *file, USHORT loadFlags);
  1542.  
  1543.     UI_JUMP_ELEMENT(char *name, char *codeName, int type,
  1544.         UI_WINDOW_OBJECT *(*newFunction)(const char *name, UI_STORAGE *file, USHORT loadFlags));
  1545.     UI_JUMP_ELEMENT(int type, UI_WINDOW_OBJECT *(*newFunction)(const char *name, UI_STORAGE *file, USHORT loadFlags));
  1546.     ~UI_JUMP_ELEMENT(void) { }
  1547.  
  1548.     static int FindName(void *object, void *matchName);
  1549.     static int FindType(void *object, void *matchType);
  1550.  
  1551.     UI_JUMP_ELEMENT *Next(void) { return((UI_JUMP_ELEMENT *)next); }
  1552.     UI_JUMP_ELEMENT *Previous(void) { return((UI_JUMP_ELEMENT *)previous); }
  1553. };
  1554.  
  1555. class EXPORT UI_JUMP_LIST : public UI_LIST
  1556. {
  1557. public:
  1558.     static UI_JUMP_LIST _jumpList;
  1559.  
  1560.     UI_JUMP_LIST(void);
  1561.     UI_JUMP_ELEMENT *First(void) { return((UI_JUMP_ELEMENT *)first); }
  1562.     UI_JUMP_ELEMENT *Last(void) { return((UI_JUMP_ELEMENT *)last); }
  1563.     void GetFunction(const char *name, UI_WINDOW_OBJECT *(**newFunction)(const char *name, UI_STORAGE *file, USHORT loadFlags));
  1564.     void GetFunction(int type, UI_WINDOW_OBJECT *(**newFunction)(const char *name, UI_STORAGE *file, USHORT loadFlags));
  1565. };
  1566. #endif
  1567.  
  1568. // ----- UI_ERROR_SYSTEM & UI_ERROR_WINDOW_SYSTEM ---------------------------
  1569. // ----- member functions found in ERROR.CPP, ERRORWIN.CPP ------------------
  1570.  
  1571. class EXPORT UI_ERROR_SYSTEM
  1572. {
  1573. public:
  1574.     // Public members described in UI_ERROR_SYSTEM reference chapter.
  1575.     virtual ~UI_ERROR_SYSTEM(void) { }
  1576.     virtual void Beep(void);
  1577.     virtual void ReportError(UI_WINDOW_MANAGER *windowManager, 
  1578.         USHORT objectFlags, char *format, ...);
  1579. };
  1580.  
  1581. class EXPORT UI_ERROR_WINDOW_SYSTEM : public UI_ERROR_SYSTEM, public UIW_WINDOW
  1582. {
  1583. public:
  1584.     // Public members described in UI_ERROR_WINDOW_SYSTEM reference chapter.
  1585.     UI_ERROR_WINDOW_SYSTEM(void);
  1586.     virtual ~UI_ERROR_WINDOW_SYSTEM(void);
  1587.     virtual void ReportError(UI_WINDOW_MANAGER *windowManager,
  1588.         USHORT objectFlags, char *format, ...);
  1589.  
  1590. private:
  1591.     // Protected members described in UI_ERROR_WINDOW_SYSTEM reference chapter.
  1592.     char *message;
  1593. };
  1594.  
  1595. extern UI_ERROR_SYSTEM *_errorSystem;
  1596.  
  1597. // ----- UI_HELP_SYSTEM & UI_HELP_WINDOW_SYSTEM -----------------------------
  1598. // ----- member functions found in HELP.CPP, HELPWIN.CPP --------------------
  1599.  
  1600. class EXPORT UI_HELP_SYSTEM
  1601. {
  1602. public:
  1603.     // Public members described in UI_HELP_SYSTEM reference chapter.
  1604.     UI_HELP_SYSTEM(void) { }
  1605.     virtual ~UI_HELP_SYSTEM(void) { }
  1606.     virtual void DisplayHelp(UI_WINDOW_MANAGER *windowManager, USHORT helpContext);
  1607. };
  1608.  
  1609. class EXPORT UI_HELP_WINDOW_SYSTEM : public UI_HELP_SYSTEM, public UIW_WINDOW
  1610. {
  1611. public:
  1612.     // Public members described in UI_HELP_WINDOW_SYSTEM reference chapter.
  1613.     UCHAR installed;
  1614.  
  1615.     UI_HELP_WINDOW_SYSTEM(char *helpFileName, UI_WINDOW_MANAGER *windowManager,
  1616.         USHORT defaultHelpContext = NO_HELP_CONTEXT);
  1617.     ~UI_HELP_WINDOW_SYSTEM(void);
  1618.  
  1619.     void DisplayHelp(UI_WINDOW_MANAGER *windowManager, USHORT helpContext);
  1620.  
  1621. private:
  1622.     // Private UI_HELP_WINDOW_SYSTEM members are not documented.
  1623.     UI_STORAGE *storage;
  1624.     UIW_TITLE *titleField;
  1625.     char *title;
  1626.     UIW_TEXT *messageField;
  1627.     char *message;
  1628.     USHORT defaultHelpContext;
  1629.  
  1630.     static void ItemClose(void *item, UI_EVENT &event)
  1631.         { event.type = S_CLOSE; ((UIW_PULL_DOWN_ITEM *)item)->eventManager->Put(event, Q_BEGIN); }
  1632. };
  1633.  
  1634. extern UI_HELP_SYSTEM *_helpSystem;
  1635.  
  1636. #endif // UI_WIN_HPP
  1637.