home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / c / fli106c / winnew.cpp < prev    next >
C/C++ Source or Header  |  1992-03-11  |  2KB  |  96 lines

  1. //
  2. // The Fusion Library Interface for DOS
  3. // Version 1.06c
  4. // Copyright (C) 1990, 1991, 1992
  5. // Software Dimensions
  6. //
  7. // FusionWindow
  8. //
  9.  
  10. #include "fliwin.h"
  11.  
  12. #ifdef __BCPLUSPLUS__
  13. #pragma hdrstop
  14. #endif
  15.  
  16. #include <alloc.h>
  17. #include <stdio.h>
  18.  
  19. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  20. //
  21. // NewWindow()
  22. //
  23. // Opens a new window and places it in queue
  24. //
  25. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  26.  
  27. int FusionWindow::NewWindow(WindowElement *WindowToOpen,char *Title,int NoShow)
  28. {
  29.   if (MaxWindows && NumberOfWindows==MaxWindows)
  30.   {
  31.     InfoBox &TooManyWindows = *new InfoBox;
  32.     char Maximum[50];
  33.     sprintf(Maximum,"%d open window(s) at a time.",MaxWindows);
  34.     TooManyWindows
  35.           + "Sorry, you cannot open any more windows."
  36.           + ""
  37.           + "This application permits a maximum of"
  38.           + Maximum;
  39.     TooManyWindows.Title("Too Many Windows");
  40.     TooManyWindows.UseInfoBox();
  41.     delete &TooManyWindows;
  42.     delete WindowToOpen;
  43.     return 0;
  44.   }
  45.  
  46.   RemoveAllMenus();
  47.  
  48.   Windows=(WindowElement**)realloc(Windows,++NumberOfWindows*sizeof(WindowElement*));
  49.  
  50.   if (NumberOfWindows>1)
  51.   {
  52.     Windows[0]->Active=0;
  53.     if (!NoShow)
  54.     {
  55.       Windows[0]->ShowWindow();
  56.       Windows[0]->ShowInterior();
  57.     }
  58.     for (register int i=NumberOfWindows-2;i>=0;i--)
  59.       Windows[i+1]=Windows[i];
  60.   }
  61.  
  62.   Windows[0]=WindowToOpen;
  63.  
  64.   if (Title)
  65.     WindowToOpen->Title=Title;
  66.  
  67.   WindowToOpen->Active=1;
  68.   WindowToOpen->MainHandler=this;
  69.  
  70.   for (register int i=1,k=0;i<10;i++,k=0)
  71.   {
  72.     for (register int j=0;j<NumberOfWindows;j++)
  73.     {
  74.       if (Windows[j]->WindowNumber==i)
  75.       {
  76.         k++;
  77.         break;
  78.       }
  79.     }
  80.     if (!k)
  81.     {
  82.       WindowToOpen->WindowNumber=i;
  83.       break;
  84.     }
  85.   }
  86.  
  87.   if (!NoShow)
  88.   {
  89.     WindowToOpen->ShowWindow();
  90.     WindowToOpen->ShowInterior();
  91.   }
  92.  
  93.   return 1;
  94. }
  95.  
  96.