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

  1. /*
  2.     Beispielapplikation    für ACS
  3.  
  4.     "Schieber"
  5.  
  6.     27.9.91            Stefan Bachert
  7.  
  8. */
  9.  
  10. #include    <stdio.h>
  11. #include    <string.h>
  12. #include    <acs.h>
  13. #include    <slider.h>
  14. #include    <slid.h>
  15.  
  16. static void show_ver (void);
  17. static void show_hor (void);
  18. static Awindow *slid_make (void *not_used);
  19.  
  20. #    include    <slider.ah>
  21.  
  22. static void show_ver (void)
  23.     /*
  24.      *    Zeige Wert des Sliders an
  25.      */
  26. {
  27.   AOBJECT *aob;
  28.   SL_DATA *vsl;
  29.  
  30.   aob = (AOBJECT *) ev_object + ev_obnr + 1;
  31.   vsl = aob-> userp1;
  32.   sprintf (ev_object [VER_VALUE]. ob_spec. free_string, "%d", vsl-> pos);
  33.   (ev_window-> obchange) (ev_window, VER_VALUE, ev_window-> work [VER_VALUE]. ob_state);
  34. }
  35.  
  36.  
  37. static void show_hor (void)
  38.     /*
  39.      *    Zeige Wert des Sliders an
  40.      */
  41. {
  42.   AOBJECT *aob;
  43.   SL_DATA *hsl;
  44.  
  45.   aob = (AOBJECT *) ev_object + ev_obnr + 1;
  46.   hsl = aob-> userp1;
  47.   sprintf (ev_object [HOR_VALUE]. ob_spec. free_string, "%d", hsl-> pos);
  48.   (ev_window-> obchange) (ev_window, HOR_VALUE, ev_window-> work [HOR_VALUE]. ob_state);
  49. }
  50.  
  51.  
  52. static Awindow *slid_make (void *not_used)
  53.     /*
  54.      *    Erzeuge Schieber Fenster
  55.      */
  56. {
  57.   Awindow *wi;
  58.   AOBJECT *aob;
  59.   SL_DATA *hsl, *vsl;
  60.   static SL_DATA slider_proto = { 200, 30, 30, 10};
  61.  
  62.   wi = Awi_create (&SCHIEBER);
  63.   if (wi == NULL) return NULL;
  64.  
  65.   hsl = Ax_malloc (sizeof (SL_DATA));    /* fetch data struct */
  66.   vsl = Ax_malloc (sizeof (SL_DATA));    /* fetch data struct */
  67.   if (hsl == NULL || vsl == NULL) return NULL;
  68.   memcpy (hsl, &slider_proto, sizeof (SL_DATA));
  69.   memcpy (vsl, &slider_proto, sizeof (SL_DATA));
  70.  
  71.   aob = (AOBJECT *) wi-> work + HOR_SLIDER + 1;
  72.   aob-> userp1 = hsl;
  73.   hsl_set (wi, HOR_SLIDER);                /* initialisiere */
  74.  
  75.   aob = (AOBJECT *) wi-> work + VER_SLIDER + 1;
  76.   aob-> userp1 = vsl;
  77.   vsl_set (wi, VER_SLIDER);                /* initialisiere */
  78.  
  79.   (wi-> open) (wi);                    /* öffne gleich */
  80.   return wi;
  81. }
  82.  
  83.  
  84. int ACSinit (void)
  85.     /*
  86.      *    Doppelklick auf NEU erzeugt ein neues Fenster
  87.      */
  88. {
  89.   Awindow *window;
  90.  
  91.   window = Awi_root ();                        /* root window */
  92.   if (window == NULL) return FAIL;            /* lege NEU Icon an */
  93.   (window-> service) (window, AS_NEWCALL, &SCHIEBER. create);
  94.  
  95.   return OK;
  96. }
  97.