home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Amiga / Applications / Musique / PlayMF_VU.lha / PianoMeter / Source / message.c < prev    next >
C/C++ Source or Header  |  1998-04-05  |  2KB  |  103 lines

  1.  
  2. #include "PianoMeter.h"
  3. #include "PianoMeter_protos.h"
  4.  
  5. extern BOOL WBMode;
  6.  
  7.  
  8. /*----------------------------*/
  9. /* Show a message to the user */
  10. /*----------------------------*/
  11.  
  12. LONG __stdargs Message(UBYTE *Msg,UBYTE *Options,...)
  13. {
  14.     LONG retval;
  15.     
  16.     va_list Args;
  17.     va_start(Args,Options);
  18.     
  19.     retval = MessageA(Msg, Options, Args);
  20.     
  21.     va_end(Args);
  22.     
  23.     return(retval);
  24. }
  25.  
  26. LONG MessageA(UBYTE *Msg,UBYTE *Options,APTR Args)
  27. {
  28.     LONG retval;
  29.     
  30.     BOOL req = FALSE;
  31.     
  32.     // if (Options) if (strchr(Options,'|')) req = TRUE;
  33.     if (Options) req = TRUE;
  34.     
  35.     if (IntuitionBase && (WBMode || req))
  36.     {
  37.         struct EasyStruct Req={sizeof(struct EasyStruct),0,"Piano Meter",0, NULL};
  38.         
  39.         if (!Options) Options = "I see";
  40.         
  41.         Req.es_TextFormat=Msg;
  42.         Req.es_GadgetFormat=Options;
  43.         
  44.         retval=EasyRequestArgs(((struct Process*)MyTask)->pr_WindowPtr,&Req,0,Args);
  45.     }
  46.     else
  47.     {
  48.         if (DOSBase)
  49.         {
  50.             VPrintf(Msg,Args);
  51.             Printf("\n");
  52.         }
  53.         retval=0;
  54.     }
  55.     return(retval);
  56. }
  57.  
  58.  
  59. /*------------------------------------------*/
  60. /* Show non-blocking (asynchronous) message */
  61. /*------------------------------------------*/
  62.  
  63. struct MsgData
  64. {
  65.     UBYTE *Msg;
  66.     UBYTE *Options;
  67.     APTR Args;
  68. };
  69.  
  70. void AsyncMessageFunction(struct Globals *glob, struct Prefs *pref, APTR UserData)
  71. {
  72.     struct MsgData *md = (struct MsgData*)UserData;
  73.     
  74.     MessageA(md->Msg, md->Options, md->Args);
  75. }
  76.  
  77. LONG __stdargs AsyncMessage(struct Globals *glob, TaskFlag flg, UBYTE *Msg,UBYTE *Options,...)
  78. {
  79.     BOOL req = FALSE;
  80.     struct MsgData md;
  81.     
  82.     va_list Args;
  83.     va_start(Args,Options);
  84.     
  85.     // if (Options) if (strchr(Options,'|')) req = TRUE;
  86.     if (Options) req = TRUE;
  87.     
  88.     if (IntuitionBase && (WBMode || req))
  89.     {
  90.         md.Msg = Msg;
  91.         md.Options= Options;
  92.         md.Args = Args;
  93.         
  94.         if (!StartAsyncTask(glob, NULL, "Piano Meter messaging task", flg, &AsyncMessageFunction, &md, sizeof(struct MsgData)))
  95.         {
  96.             MessageA(Msg,Options,Args);
  97.         }
  98.     }
  99.     va_end(Args);
  100.     
  101.     return(0);
  102. }
  103.