home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_07 / ACS.ZIP / ACS / OWN_DESK / DESK.C < prev    next >
C/C++ Source or Header  |  1992-01-28  |  2KB  |  130 lines

  1. /*
  2.     Beispielapplikation für ACS
  3.  
  4.     "Hello World" mit eigenem Desktop
  5.  
  6.     20.12.91         Stefan Bachert
  7.  
  8. */
  9.  
  10. #include    <acs.h>
  11. #include    <desk.h>
  12.  
  13. static Awindow *hello_make (void *not_used);
  14. static Awindow *desk_make  (void *not_used);
  15. static int desk_service (Awindow *window, int task, void *in_out);
  16. static void new_window (void);
  17. static void any_where (void);
  18.  
  19. #include    <desk.ah>
  20.  
  21.  
  22. static void any_where (void)
  23.     /*
  24.      *    frage
  25.      */
  26. {
  27.   Ame_popup (ev_window, &ASK, -1, -1);
  28. }
  29.  
  30.  
  31. static void new_window (void)
  32.     /*
  33.      *    Weiteres Fenster
  34.      */
  35. {
  36.   HELLO. create (NULL);
  37. }
  38.  
  39.  
  40. static Awindow *desk_make (void *not_used)
  41.     /*
  42.      *  Erzeuge Desktop
  43.      */
  44. {
  45.   Awindow *wi;
  46.  
  47.   wi = Awi_create (&MY_DESK);
  48.   if (wi == NULL) return NULL;
  49.  
  50.   if (wi-> work == NULL) return wi;
  51.   if (application) {
  52.     wi-> work-> ob_x      = desk. x;
  53.     wi-> work-> ob_y      = desk. y;
  54.     wi-> work-> ob_width  = desk. w;
  55.     wi-> work-> ob_height = desk. h;
  56.   } else {
  57.     wi-> work-> ob_x      = 0;
  58.     wi-> work-> ob_y      = 0;
  59.     wi-> work-> ob_width  = desk. w / 2;
  60.     wi-> work-> ob_height = desk. h / 2;
  61.   };
  62.  
  63.   return wi;
  64. }
  65.  
  66.  
  67. static Awindow *hello_make (void *not_used)
  68.     /*
  69.      *  Erzeuge Hello World Fenster
  70.      */
  71. {
  72.   Awindow *wi;
  73.  
  74.   wi = Awi_create (&HELLO);
  75.   if (wi == NULL) return NULL;
  76.   if ((wi-> open) (wi)) {        /* öffne gleich, auch als accessory */
  77.     Awi_delete (wi);
  78.     return NULL;
  79.   };
  80.   return wi;
  81. }
  82.  
  83.  
  84. static void term (Awindow *window)
  85.     /*
  86.      *    Terminiert dieses Window
  87.      */
  88. {
  89.   if (application) {
  90.     Awi_delete (window);
  91.   } else {
  92.     Awi_closed (window);
  93.   };
  94. }
  95.  
  96.  
  97. static int desk_service (Awindow *window, int task, void *in_out)
  98.     /*
  99.      *
  100.      */
  101. {
  102.   switch (task) {
  103.   case AS_TERM:
  104.     term (window);
  105.     break;
  106.   default:
  107.     return FALSE;
  108.   };
  109.   return TRUE;
  110. }
  111.  
  112.  
  113. int ACSinit (void)
  114.     /*
  115.      *  Doppelklick auf NEU erzeugt ein neues Fenster
  116.      */
  117. {
  118.   Awindow *window;
  119.  
  120.   window = Awi_root ();                 /* root window */
  121.  
  122.   if (window == NULL) return FAIL;      /* lege NEU Icon an */
  123.   (window-> service) (window, AS_NEWCALL, &HELLO. create);
  124.  
  125.   window = &HELLO;
  126.   (window-> create) (NULL);             /* sofort ein Fenster erzeugen */
  127.  
  128.   return OK;
  129. }
  130.