home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a120 / 1.ddi / API / FOXEVENT.C < prev    next >
Encoding:
C/C++ Source or Header  |  1992-04-24  |  8.0 KB  |  328 lines

  1. /*------------------------------------------------------------------*/
  2. /* FOXEVENT.C                                                       */
  3. /*------------------------------------------------------------------*/
  4. /* API ▒`  ªí : 1. ActivateEvent()   (in FOXEVENT.C)                */
  5. /*              2. DeActivateEvent() (in FOXEVENT.C)                */
  6. /*              3. PutInt()          (in FOXEVENT.C)                */
  7. /*              4. ChkNulls()        (in FOXEVENT.C)                */
  8. /*              5. ListFindWindow()  (in FOXEVENT.C)                */
  9. /*              6. ChkModifiers()    (in FOXEVENT.C)                */
  10. /*              7. ListEvent()       (in FOXEVENT.C)                */
  11. /*              8. EventHandler()    (in FOXEVENT.C)                */
  12. /* API ¿τ╝╞└] : FOXEVENT.PLB                                        */
  13. /* ⌐IÑsñΦªí   : SET LIBRARY TO FOXEVENT.PLB(⌐IÑs ActivateEvent()  ) */
  14. /*              SET LIBRARY TO             (⌐IÑs DeActivateEvent()) */
  15. /*------------------------------------------------------------------*/
  16.  
  17. #include <pro_ext.h>
  18.  
  19.  
  20. #define nl      _PutChr(0x0a);
  21.  
  22.  
  23. int         eventid;            /* º┌¡╠¬║¿╞Ñ≤│B▓z╛╣ */
  24. long        count_nulls=0;      /* Ñ╬¿╙▓╓¡p╡Ω╡L¿╞Ñ≤ñºª╕╝╞¬║▓╓¡p¡p╝╞╛╣ */
  25.  
  26.  
  27.  
  28. /* ª╣▒`ªí▒N▒╡ª¼ñ@¡╙¬°╛π╝╞¿├▒N¿Σ╕mñJñ@¡╙ Value ╡▓║c┼Θññ   */
  29. /* , ╡M½ßªA▒Nª╣╡▓║c┼Θ┐ΘÑX                                */
  30.  
  31. PutInt(unsigned long number)
  32. {
  33.     Value       val;
  34.  
  35.  
  36.     val.ev_type = 'I';
  37.     val.ev_width = 10;
  38.     val.ev_long = number;
  39.     _PutValue(&val);
  40.  
  41.  
  42. }
  43.  
  44.  
  45.  
  46. ChkNulls()
  47. {
  48.  
  49.     if (count_nulls)     /* └╦¼d¼Oº_ñwª│╡Ω╡L¿╞Ñ≤│Q│B▓z */
  50.     {
  51.         _Execute("CLEAR");
  52.         _PutStr("\n\nñw │B ▓z ñº ╡Ω ╡L ¿╞ Ñ≤ ¬║ ╝╞ Ñ╪  : ");
  53.         PutInt(count_nulls);
  54.         count_nulls = 0;     /* ▒N¡p╝╞╛╣¡½│]¼░╣s */
  55.     }
  56.  
  57. }
  58.  
  59.  
  60.  
  61.  
  62. ListFindWindow(WHandle FAR *window, Point win_point)
  63. {
  64.     int where;
  65.  
  66.  
  67.         where = _FindWindow(window, win_point);
  68.         _PutStr("▒z⌐≤╡°╡íñWñºª≤ª∞╕m½÷ñU╖╞╣½Ñ¬½÷╢s : ");
  69.         switch (where)
  70.         {
  71.             case inBorder:
  72.                _PutStr("╡°╡íñº├Σ¼╔ñW\n");
  73.                break;
  74.             case inHelp:
  75.                _PutStr("╗▓ºU╗í⌐·(Help)╡°╡íññ\n");
  76.                break;
  77.             case inContent:
  78.                _PutStr("╡°╡íñºñσªrñ║«e░╧ññ\n");
  79.                break;
  80.             case inDrag:
  81.                _PutStr("╡°╡íñº│╗║▌╝╨├D░╧(ÑτºYÑiÑ╬¿╙▓oñ▐╡°╡íñº│╗║▌├Σ¼╔)ñW \n");
  82.                break;
  83.             case inGrow:
  84.                _PutStr("▒▒¿ε╡°╡íñjñpñº╝╨░OñW\n");
  85.                break;
  86.             case inGoAway:
  87.                _PutStr("├÷│¼╡°╡íñº╝╨░OñW \n");
  88.                break;
  89.             case inZoom:
  90.                _PutStr("⌐±ñj╡°╡íª▄│╠ñjñº╝╨░OñW \n");
  91.                break;
  92.             case inVUpArrow:
  93.                _PutStr("ªVñW▒▓░╩ñº╝╨░OñW \n");
  94.                break;
  95.             case inVDownArrow:
  96.                _PutStr("ªVñU▒▓░╩ñº╝╨░OñW \n");
  97.                break;
  98.             case inVPageUp:
  99.                _PutStr("ªVñW▒▓¡╢ñº▒▓░╩╝╨Ñ▄░╧ññ \n");
  100.                break;
  101.             case inVPageDown:
  102.                _PutStr("ªVñU▒▓¡╢ñº▒▓░╩╝╨Ñ▄░╧ñW \n");
  103.                break;
  104.             case inVThumb:
  105.                _PutStr("½½¬╜▒▓░╩╝╨Ñ▄¼Wñññº╝╨░OñW \n");
  106.                break;
  107.             case inHUpArrow:
  108.                _PutStr("ªVѬ▒▓░╩ñº╝╨░OñW \n");
  109.                break;
  110.             case inHDownArrow:
  111.                _PutStr("ªVÑk▒▓░╩ñº╝╨░OñW \n");
  112.                break;
  113.             case inHPageUp:
  114.                _PutStr("ªVѬ▒▓¡╢ñº▒▓░╩╝╨Ñ▄░╧ññ\n");
  115.                break;
  116.             case inHPageDown:
  117.                _PutStr("ªVÑk▒▓¡╢ñº▒▓░╩╝╨Ñ▄░╧ññ\n");
  118.                break;
  119.             case inHThumb:
  120.                _PutStr("ñ⌠Ñ¡▒▓░╩╝╨Ñ▄¼Wñññº╝╨░OñW \n");
  121.                break;
  122.             case inMenuBar:
  123.                _PutStr("  Ñ\ »α ¬φ │µ ñº ┐∩ ╢╡ ñW \n");
  124.                break;
  125.         }
  126.  
  127. }
  128.  
  129.  
  130.  
  131. ChkModifiers(short modifiers)
  132. {
  133.  
  134.     int         others=FALSE;
  135.  
  136.         if (modifiers & altKey)           /* Alt ┴Σ│Q½÷ñU */
  137.         {
  138.                 if (modifiers & ctrlKey)  /* Ctrl ┴Σ */
  139.                 {
  140.                     _PutStr("Ctrl");
  141.                     others = TRUE;
  142.                 }
  143.  
  144.                 if (modifiers & shiftKey)  /* Shift ┴Σ */
  145.                 {
  146.                     if (others)
  147.                         _PutChr('+');
  148.                     _PutStr("Shift");
  149.                     others = TRUE;
  150.                 }
  151.  
  152.  
  153.                 if (others)
  154.                     _PutChr('+');
  155.                 _PutStr("Alt");
  156.  
  157.  
  158.         }
  159.         else
  160.         {
  161.             if (modifiers & ctrlKey)
  162.                 if (modifiers & shiftKey)
  163.                     _PutStr("Ctrl+Shift");
  164.                 else
  165.                     _PutStr("Ctrl");
  166.             else
  167.                 if (modifiers & shiftKey)
  168.                     _PutStr("Shift");
  169.         }
  170.  
  171.  
  172.         _PutChr(0x0a);
  173.         others = FALSE;
  174.  
  175.  
  176. }
  177.  
  178.  
  179.  
  180. ListEvent(EventRec FAR *ev, char FAR *whatevent)
  181. {
  182.  
  183.  
  184.  
  185.     ChkNulls();    /* └╦¼d╡Ω╡L¿╞Ñ≤ */
  186.     _PutStr("\n\n==============  ╖s¬║¿╞Ñ≤  ==============\n\n");
  187.  
  188.     _PutStr("ñ░         ╗≥         ¿╞        Ñ≤   : ");
  189.     _PutStr(whatevent); nl;
  190.  
  191.     _PutStr("╖╞  ╣½  ¬║  ñ⌠  Ñ¡  ª∞  ╕m  «y  ╝╨   : ");
  192.     PutInt((long) ev->where.h); nl;
  193.  
  194.     _PutStr("╖╞  ╣½  ¬║  ½½  ¬╜  ª∞  ╕m  «y  ╝╨   : ");
  195.     PutInt((long) ev->where.v); nl;
  196.  
  197.     _PutStr("½÷┴Σñº½÷┴Σ╜X⌐╬¼Yñ@¡╙╡°╡íñº MHANDLE   : ");
  198.     /* └╦¼d¼Oº_ñ@¡╙Ñ┐│W¬║┴Σ│Q½÷ñU */
  199.     if (ev->what == keyDownEvent && !(ev->modifiers & shiftCodeMask))
  200.        _PutChr(ev->message);
  201.     else
  202.         PutInt(ev->message); nl;
  203.  
  204.     _PutStr("╡▓ ║c ┼Θ EventRec ñº ╕Ω «╞ ╢╡ misc   : ");
  205.     PutInt(ev->misc); nl;
  206.  
  207.     _PutStr("╡▓ ║c ┼Θ EventRec ñº ╕Ω «╞ ╢╡ misc2  : ");
  208.     PutInt(ev->misc2); nl;
  209.  
  210.     if (ev->mbState == leftButton)
  211.         _PutStr("╖╞   ╣½   ½÷   ╢s   ñº   ¬¼   ║A     :  ╖╞╣½ñºÑ¬½÷╢s│Q½÷ñU\n");
  212.  
  213.     _PutStr("╜╒  ╕`  ┴Σ(Ctrl,Shift,ñ╬ Alt) ñº  ¡╚ : ");
  214.     ChkModifiers(ev->modifiers);
  215.  
  216.  
  217. }
  218.  
  219.  
  220. FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
  221. {
  222.  
  223.  
  224.  
  225.     switch(ev->what)
  226.     {
  227.         case nullEvent:
  228.            count_nulls++;
  229.            return NO;
  230.  
  231.         case mouseDownEvent:
  232.            ListEvent(ev, "mouseDownEvent");
  233.            ListFindWindow(&theWindow, ev->where);
  234.            return NO;
  235.            break;
  236.  
  237.         case keyDownEvent:
  238.            ListEvent(ev, "keyDownEvent");
  239.            return NO;
  240.            break;
  241.  
  242.         case activateEvent:
  243.            ListEvent(ev, "activateEvent");
  244.            return NO;
  245.            break;
  246.  
  247.         case deactivateEvent:
  248.            ListEvent(ev, "deactivateEvent");
  249.            return NO;
  250.            break;
  251.  
  252.         case menuHitEvent:
  253.            ListEvent(ev, "menuHitEvent");
  254.            return NO;
  255.            break;
  256.  
  257.         case closeEvent:
  258.            ListEvent(ev, "closeEvent");
  259.            return NO;
  260.            break;
  261.  
  262.         case hideEvent:
  263.            ListEvent(ev, "hideEvent");
  264.            return NO;
  265.            break;
  266.  
  267.         case showEvent:
  268.            ListEvent(ev, "showEvent");
  269.            return NO;
  270.            break;
  271.  
  272.         case hotkeyEvent:
  273.            ListEvent(ev, "hotkeyEvent");
  274.            return NO;
  275.            break;
  276.  
  277.         case sizeEvent:
  278.            ListEvent(ev, "sizeEvent");
  279.            return NO;
  280.            break;
  281.  
  282.         case zoomEvent:
  283.            ListEvent(ev, "zoomEvent");
  284.            return NO;
  285.            break;
  286.  
  287.  
  288.         default:
  289.             return NO;
  290.     }
  291.     return YES;
  292. }
  293.  
  294.  
  295. FAR ActivateEvent()
  296. {
  297.  
  298.     eventid = _ActivateHandler(EventHandler);
  299.     _Execute("SET PRINT TO FOXEVENT.TXT");
  300.     _Execute("SET PRINT ON");
  301.  
  302. }
  303.  
  304.  
  305.  
  306.  
  307. FAR DeActivateEvent()
  308. {
  309.  
  310.     _DeActivateHandler(eventid);
  311.     _Execute("SET PRINT OFF");
  312.     _Execute("SET PRINT TO");
  313.  
  314. }
  315.  
  316. FoxInfo myFoxInfo[] =
  317. {
  318.     {"ACTIVATEEVENT", ActivateEvent, CALLONLOAD, ""},
  319.     {"DEACTIVATEEVENT", DeActivateEvent, CALLONUNLOAD, ""}
  320. };
  321.  
  322. FoxTable _FoxTable =
  323. {
  324.     (FoxTable FAR *)0,
  325.     sizeof(myFoxInfo) / sizeof(FoxInfo),
  326.     myFoxInfo
  327. };
  328.