home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 321_01 / moustrap.h < prev    next >
C/C++ Source or Header  |  1990-08-06  |  6KB  |  198 lines

  1. /***********************************************************************/
  2. /*                                                                     */
  3. /*    MOUSTRAP.H                                                       */
  4. /*                                                                     */
  5. /*   Author: James M. Curran                                           */
  6. /*   Copyright (c) 1988, James M. Curran                               */
  7. /*                                                                     */
  8. /***********************************************************************/
  9. /* Created : Friday, September  9, 1988 at 10:18 AM                    */
  10. /*                                                                     */
  11. /* Revision: 1.0   Last Revised: Sunday, September 11, 1988 @ 5:39 PM  */
  12. /***********************************************************************/
  13.  
  14.  
  15. #define M_Undefined        0
  16.  
  17. /* Paging Method Types        */
  18. #define M_Overlaid_Pages    16
  19. #define M_Single_Pages        65535
  20.  
  21.  
  22. /*  Page Coordinate Types    */
  23. #define M_Text_Coord        3
  24. #define M_Graphic_Coord        0
  25.  
  26. /*  Buttons            */
  27. #define M_Left            0
  28. #define M_Right            1
  29. #define    M_Center        2
  30. #define M_Middle        2
  31.  
  32. /*  Cursor direction (for limits)*/
  33. #define    M_HORIZ            1
  34. #define    M_VERT            2
  35.  
  36.  
  37. #define MERROR               -1    /* An error occured (return value) */
  38. #define MNOERROR        0    /* NO error occured (return value) */
  39.  
  40. /*    Errors (in M_ERROR if return value was MERROR)                 */
  41. #define    MNOINIT            1    /* M_Page_Method not initialized   */
  42. #define MNOSPACE        2    /* Insuficent memory to add item   */
  43. #define MTOOMANY        3    /* Attemp to create more than 16 pages */
  44. #define MNOREINIT        4    /* Attempt to execute DEFINE...SYSTEM twice */
  45. #define MNOTPAGE        5    /* Page referenced hasn't been defined */
  46. #define MNOTBUTTON        6    /* Button referenced-- not defined */
  47. #define MNOMOUSE        7    /* There's no mouse attached       */
  48. #define MBUTTONRET        8    /* Button define with return value */
  49. #define MNOHOTSPOT              9       /* Hot Spot referenced-- not defined*/
  50. #define MNOACTIVE           10    /* There is no page active       */
  51.      
  52.  
  53. #define    TC(char,fore,back) char+fore*256+back*4096
  54.  
  55.  
  56. typedef unsigned    mouse_t;
  57.  
  58.     struct    M_P_D {
  59.             mouse_t    Page_ID;
  60.             mouse_t    Top;
  61.             mouse_t    Left;
  62.             mouse_t    Right;
  63.             mouse_t    Bottom;
  64.             mouse_t    Coord_Type;
  65.             struct    M_P_D        *Next;           
  66.             };
  67.  
  68. #define M_Page_Definition struct M_P_D
  69.  
  70.     struct    M_B_D {
  71.             mouse_t    Page_ID;
  72.             mouse_t    Button;
  73.             mouse_t    Return_Value;
  74.             struct  M_B_D        *Next;
  75.             };
  76.  
  77. #define    M_Button_Definition struct M_B_D
  78.  
  79.  
  80.     struct    M_HS_D {
  81.             mouse_t    HS_ID;
  82.             mouse_t    Page_ID;
  83.             mouse_t Button;
  84.             mouse_t    Top;
  85.             mouse_t    Left;
  86.             mouse_t    Right;
  87.             mouse_t    Bottom;
  88.             mouse_t    Return_Value;
  89.             struct    M_HS_D        *Next;
  90.             };
  91.  
  92. #define    M_Hot_Spot_Definition struct M_HS_D
  93.  
  94.  
  95.  
  96.  
  97. /*    Mouse Control Primatives            */
  98.  
  99. extern    mouse_t cdecl Check_Mouse(void);
  100.  
  101. extern    void     cdecl Show_Mouse(void);
  102.  
  103. extern    void     cdecl Hide_Mouse(void);
  104.  
  105. extern    mouse_t cdecl Get_Mouse_Position(mouse_t  *, mouse_t  *);
  106.  
  107. extern    void     cdecl Set_Mouse_Position(mouse_t X, mouse_t Y);
  108.  
  109. extern    mouse_t cdecl Get_Mouse_Press(mouse_t Button, mouse_t  *count, \
  110.              mouse_t  *X, mouse_t  *Y);
  111.  
  112. extern    mouse_t cdecl Get_Mouse_Release(mouse_t Button, mouse_t  *count, \
  113.              mouse_t  *X, mouse_t  *Y);
  114.  
  115. extern    void     cdecl Set_Mouse_Region(mouse_t Top, mouse_t Left, \
  116.              mouse_t Bottom, mouse_t Right);
  117.  
  118. extern    void     cdecl Set_Mouse_Limits(mouse_t Direction, mouse_t Minimum,\
  119.              mouse_t Maximum);
  120.  
  121. extern    void     cdecl Set_Mouse_Limits_Horiz(mouse_t Left, mouse_t Right);
  122.  
  123. extern    void    cdecl Set_Mouse_Limits_Vert(mouse_t Top, mouse_t Bottom);
  124.  
  125. extern    void    cdecl Set_Mouse_Graphic_Cursor(mouse_t Hot_X, mouse_t Hot_Y,\
  126.              mouse_t Mask[]);
  127. extern    void    cdecl Set_Mouse_Text_Cursor(mouse_t typ, mouse_t p1, \
  128.              mouse_t p2);
  129.  
  130. extern    void    cdecl Get_Mickeys(mouse_t *X, mouse_t *Y);
  131.  
  132.  
  133.  
  134. /*    Advanced Mouse Control Routines            */
  135.  
  136.  
  137. extern  mouse_t cdecl Define_Mouse_System(mouse_t Page_Type);
  138.  
  139. extern  void    cdecl Clear_All_Mouse_Definitions(void );
  140.  
  141. extern  mouse_t cdecl Add_Mouse_Page(mouse_t Page_Type,mouse_t Top,
  142.             mouse_t Left,mouse_t Bottom,mouse_t Right);
  143.  
  144. extern  mouse_t cdecl Delete_Mouse_Page(mouse_t Page_ID);
  145.  
  146. extern  mouse_t cdecl Activate_Mouse_Page(mouse_t Page_ID);
  147.  
  148. extern  mouse_t cdecl DeActivate_Mouse_Page(mouse_t Page_ID);
  149.  
  150. extern  mouse_t cdecl Clear_Mouse_Pages(void );
  151.  
  152. extern  mouse_t cdecl Add_Mouse_Button(mouse_t Page_ID,mouse_t Button,
  153.             mouse_t Return_Value);
  154.  
  155. extern  mouse_t cdecl Delete_Mouse_Button(mouse_t Page_ID,mouse_t Button);
  156.  
  157. extern  mouse_t cdecl Add_Mouse_Hot_Spot(mouse_t Page_ID,mouse_t Button,
  158.             mouse_t top, mouse_t left,mouse_t bottom,
  159.             mouse_t right,mouse_t ret_value);
  160.  
  161. extern  mouse_t cdecl Delete_Mouse_Hot_Spot(mouse_t HS_ID);
  162.  
  163. extern  mouse_t cdecl Read_Mouse(void );
  164.  
  165.  
  166. /*    Global variables available for use in application programs    */
  167.  
  168.     extern    mouse_t    M_Paging_Method; /* Overlaid, Single, or Undefined */
  169.     extern    mouse_t    M_Error;     /* Error Condition           */
  170.     extern    mouse_t    _mouse_there;     /* 0=No Mouse, 2 or 3= # of buttons*/
  171.  
  172.  
  173.  
  174. /*    Pre-Defined Graphic Cursor                    */
  175.     extern mouse_t Lightening[];    /* Use Hot-Spot (4,15)        */
  176.     extern mouse_t Peace[];        /* Use Hot-Spot    (8,8)        */
  177.     extern mouse_t CrossHair[];    /* Use Hot-spot (8,8)        */
  178.  
  179.  
  180. /*    "Force" automatic use of ?MOUSE.LIB during link            */
  181.  
  182. #if M_I86SM
  183. #pragma comment(lib,"SMouse") 
  184. #endif
  185.  
  186. #if M_I86CM
  187. #pragma comment(lib,"CMouse") 
  188. #endif
  189.  
  190. #if M_I86MM
  191. #pragma comment(lib,"MMouse") 
  192. #endif
  193.  
  194. #if M_I86LM
  195. #pragma comment(lib,"LMouse") 
  196. #endif    
  197.  
  198.