home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / window / omega2 / omevent.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1992-04-24  |  2.5 KB  |  128 lines

  1. //
  2. // *************************************************************************
  3. // *                                                                       *
  4. // *    OMEGA C++ Windowing Class Library                                  *
  5. // *    =================================                                  *
  6. // *                                                                       *
  7. // *    Copyright 1991,92 Tom Clancy                                       *
  8. // *    Submitted to the public domain, April 1992                         *
  9. // *                                                                       *
  10. // *************************************************************************
  11. // *                                                                       *
  12. // *    Event Handling Methods                                             *
  13. // *                                                                       *
  14. // *************************************************************************
  15. //
  16.  
  17. #include <dos.h>
  18. #include "omevent.hpp"
  19.  
  20. static int TheEvent, Emx, Emy, Emb, Cmd, Disabled;
  21.  
  22. int event_handler::getlastevent() {
  23.  
  24.   return TheEvent;
  25. }
  26.  
  27. void event_handler::setlastevent(int e) {
  28.  
  29.   TheEvent=e;
  30. }
  31.  
  32. void event_handler::setlastcmd(int c) {
  33.  
  34.   Cmd=c;
  35. }
  36.  
  37. int  event_handler::getlastcmd() {
  38.  
  39.   return Cmd;
  40. }
  41.  
  42. int  event_handler::buttonx() {
  43.  
  44.  return Emx;
  45. }
  46.  
  47. int  event_handler::buttony() {
  48.  
  49.   return Emy;
  50. }
  51.  
  52. void event_handler::setbuttonx(int x) {
  53.   Emx=x;
  54. }
  55.  
  56. void event_handler::setbuttony(int y) {
  57.   Emy=y;
  58. }
  59.  
  60. int  event_handler::buttonb() {
  61.  
  62.   return Emb;
  63. }
  64.  
  65. void event_handler::disable_handler() {
  66.  
  67.   Disabled=1;
  68. }
  69.  
  70. void event_handler::enable_handler() {
  71.  
  72.   Disabled=0;
  73. }
  74.  
  75. int  event_handler::isdisabled() {
  76.  
  77.   return Disabled;
  78. }
  79.  
  80. int  event_handler::event() {
  81.  
  82.   int s,p;
  83.  
  84.   TheEvent=0;
  85.   showmouse();
  86.   if(!isdisabled()) {
  87.     getbuttonpress(0,s,p,Emx,Emy);
  88.     if((s&1)==1) {
  89.       TheEvent=evMButton;
  90.       mouse::getmouse(Emx,Emy,Emb);
  91.     }
  92.     else
  93.       if((s&2)==2) {
  94.     TheEvent=evMButton;
  95.     mouse::getmouse(Emx,Emy,Emb);
  96.       }
  97.       else
  98.     if(keypressed()) {
  99.       TheEvent=evKeyboard;
  100.       readkey();
  101.     }
  102.   }
  103.   return TheEvent;
  104. }
  105.  
  106. void event_handler::handle_events() {
  107.  
  108.   int ev,cm;
  109.  
  110.   if(event()) {
  111.     switch(getlastevent()) {
  112.       case evMButton :
  113.     cm=handle_mouse_event();
  114.     break;
  115.       case evKeyboard :
  116.     cm=handle_key_event();
  117.     break;
  118.     }
  119.     setlastcmd(cm);
  120.   }
  121. }
  122.  
  123. void event_handler::run() {
  124.  
  125.   while(getlastcmd()!=cmdClose)
  126.     handle_events();
  127. }
  128.