home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1999 February / VPR9902A.BIN / FFILLY / UG / winbut.tfy < prev   
Text File  |  1998-04-29  |  7KB  |  202 lines

  1.  
  2.   str GB_Cap[];   // CAPTION
  3.   int GB_X[];
  4.   int GB_Y[];
  5.   int GB_W[];
  6.   int GB_H[];
  7.   int GB_Col[];
  8.   int GB_Typ[];   // type
  9.                   //   1 == disable     clicked button
  10.                   //   2 == disable not clicked button
  11.                   //   3 ==    able not clicked button
  12.                   //   4 ==           frameless button
  13.   int WinFocus;   // FOCUS
  14.  
  15.  
  16.     // PAINT BUTTON ----IF col < 0 NOT PAINT ------------------------------
  17.   int paintButton( int pic, int x, int y, int w, int h,
  18.                                           int col1, int col2, int col3 ) {
  19.     SetLineSize(1);
  20.     if ( col1 >= 0 ) {     // FILL RECT
  21.       SetPaintColor( col1 );
  22.       DrawRect( pic, x, y, x+w, y+h, 0,0 );
  23.     }
  24.     if ( col2 >= 0 ) {
  25.       SetPaintColor( col2 );
  26.       DrawLine( pic, x, y, x+w-1, y );   // NORTH
  27.       DrawLine( pic, x, y,     x, y+h ); // WEST
  28.     }
  29.     if ( col3 >= 0 ) {
  30.       SetPaintColor( col3 );
  31.       DrawLine( pic,   x+1, y+h-1, x+w-1, y+h-1 ); // SOUTH
  32.       DrawLine( pic, x+w-1, y,     x+w-1, y+h );   // EAST
  33.     }
  34.   } // method end
  35.  
  36.  
  37.  
  38.     // WINDOW WITH BUTTON -------------------------------------------------
  39.   int makeWindow( int winnum, int pic, int x, int y, int w, int h,
  40.                                    int allbut, int save_on, int frmcol ) {
  41.     int wpic, spic;
  42.     int i, j;
  43.     int b_x[], b_y[], b_w[], b_h[], b_typ[];  // FOR CLICK POS
  44.     int c1, c2;                               // FOR BUTTON COLOR
  45.     int click_on;                             // CLICK FRAG
  46.     int n;                                    // FOR USER MES
  47.  
  48.     WinFocus = winnum;
  49.     click_on = 0;
  50.     wpic = CreatePic( pic, w, h );
  51.       // SAVE BACK
  52.     if ( save_on>=1 ) {
  53.       spic = CreatePic( pic, w, h ); MovePic( pic, x,y, w,h, spic, 0,0 );
  54.     }
  55.       // FORM
  56.     if ( GB_Cap[0] == "3D" ) {
  57.       paintButton( wpic, 0,0,    w,h,       -2, frmcol, 0x000000 );
  58.       paintButton( wpic, 1,1, w-2,h-2,  frmcol, 0xffffff, 0x808080 );
  59.     }
  60.     else { paintButton( wpic, 0,0, w,h,  frmcol, 0xffffff, 0x808080 ); }
  61.       // PAINT BUTTON
  62.     for ( i = 1; i <= allbut; i = i + 1 ) {
  63.       if ( GB_Typ[i]==1 )                      { c1 = 0x808080; c2 = 0xffffff; }
  64.       else if ( 2<=GB_Typ[i] && GB_Typ[i]<=3 ) { c1 = 0xffffff; c2 = 0x808080; }
  65.       else if ( GB_Typ[i]==4 )                 { c1 = -2;       c2 = -2; }
  66.       paintButton( wpic, GB_X[i], GB_Y[i], GB_W[i], GB_H[i], GB_Col[i], c1, c2 );
  67.         // CAPTION
  68.       SetFont( GB_H[i]-5, "MS ゴシック", 128,0,0,0,600 );
  69.       TextWrite( GB_Cap[i], wpic, GB_X[i] + 5, GB_Y[i] + 2 );
  70.         // LOCALIZE
  71.       b_x[i]   = x + GB_X[i]; b_y[i] = y + GB_Y[i];
  72.       b_w[i]   = GB_W[i];     b_h[i] = GB_H[i];
  73.       b_typ[i] = GB_Typ[i];
  74.     } // for end
  75.       // CLEAR ARRAY
  76.     DelArrayAll( GB_Cap[] );
  77.     DelArrayAll( GB_X[] );   DelArrayAll( GB_Y[] );
  78.     DelArrayAll( GB_W[] );   DelArrayAll( GB_H[] );
  79.     DelArrayAll( GB_Col[] ); DelArrayAll( GB_Typ[] );
  80.       // PAINT FORM
  81.     MovePic( wpic, 0,0, w,h,  pic, x,y );
  82.     PostMes( USER, 8000, wpic );  // NOTIFY PICTURE NUM
  83.  
  84.     mes( LBDOWN ) {
  85.       if ( WinFocus == winnum ) {
  86.         for ( i = 1; i <= allbut; i = i + 1 ) {
  87.           if ( b_x[i] <= MesP2 && MesP2 < b_x[i]+b_w[i] &&
  88.                b_y[i] <= MesP3 && MesP3 < b_y[i]+b_h[i] && b_typ[i] >= 3 ) {
  89.             click_on = 1;
  90.             if ( b_typ[i] == 3 ) {
  91.               paintButton( pic, b_x[i],b_y[i], b_w[i],b_h[i],
  92.                                                    -2, 0x808080, 0xffffff );
  93.             }
  94.             else if ( b_typ[i] == 4 ) {
  95.               paintButton( pic, b_x[i] + 1,b_y[i]+1, b_w[i] - 2,b_h[i] - 2,
  96.                                                          0x000000, -2, -2 );
  97.             }
  98.             PostMes( USER, MakeLong( i, winnum ) ); // NOTIFY BUTTON NUM 
  99.             j = i; break;                           // SAVE BUTTON NUM
  100.           } // if end
  101.         } // for end
  102.       } // if WinFocus end
  103.     } // mes LB end
  104.  
  105.     mes( LBUP ) {  // AFTER BUTTON CLICKED
  106.       if ( click_on == 1 ) {
  107.         if ( b_typ[i]==3) {
  108.           paintButton( pic, b_x[j],b_y[j], b_w[j],b_h[j], -2, 0xffffff, 0x808080 );
  109.         }
  110.         else if( b_typ[i]==4 ){
  111.           MovePic( wpic, b_x[j] - x, b_y[j] - y, b_w[j], b_h[j], pic, b_x[j], b_y[j] );
  112.         }
  113.         click_on = 0;
  114.       }
  115.     } // mes LBUP end
  116.  
  117.     mes( USER ) {
  118.       if ( GetHiWord( MesP1 ) == winnum ) { // GET WIN NUM
  119.         n = GetLowWord( MesP1 );            // GET MES NUM
  120.         if ( n == 1000 ) {                  // QUIT
  121.           del_us;
  122.           DelPic( wpic );
  123.           if ( save_on >= 1 ) {             // REPAIR BACK
  124.             MovePic( spic, 0,0, w,h, pic, x,y ); DelPic( spic );
  125.           }
  126.           del_me;
  127.         }
  128.       }
  129.     } // mes USER end
  130.   } // method end
  131.  
  132.  
  133.     // INPUT BUTTON ARRAY----- IF -1 NOT INP ------------------------------
  134.   int inputButArr( str cap, int x, int y, int w, int h,
  135.                                    int col, int typ, int from, int to ) {
  136.     int i;
  137.     for ( i = from; i <= to; i = i + 1 ) {
  138.       if ( cap != "-1" ) { GB_Cap[i] = cap; }
  139.       if ( x   != -1 )   { GB_X[i] = x; }
  140.       if ( y   != -1 )   { GB_Y[i] = y; }
  141.       if ( w   != -1 )   { GB_W[i] = w; }
  142.       if ( h   != -1 )   { GB_H[i] = h; }
  143.       if ( col != -1 )   { GB_Col[i] = col; }
  144.       if ( typ != -1 )   { GB_Typ[i] = typ; }
  145.     }
  146.   } // method end
  147.  
  148.  
  149.     // PAINT TEXT ---------------------------------------------------------
  150.   int paintText( int pic, int x, int y, int fsize,
  151.                                          int r, int g, int b, str ser ) {
  152.     SetFont( fsize, "MS ゴシック", 128,0,0,0,600 );
  153.     TextColor( r, g, b ); BackMode(1);
  154.     TextWrite( ser, pic, x, y );
  155.   } // method end
  156.  
  157.     // PAINT TEXT ---------------------------------------------------------
  158.   int paintBText( int pic, int x, int y, int fsize,
  159.                                          int r, int g, int b, str ser ) {
  160.     SetFont( fsize, "MS ゴシック", 128,0,0,0,600 );
  161.     BackMode( 1 );
  162.     TextColor( 0, 0, 0 ); TextWrite( ser, pic, x + 2, y + 2 );
  163.     TextColor( r, g, b ); TextWrite( ser, pic, x, y );
  164.   } // method end
  165.  
  166.     // PAINT LABEL --------------------------------------------------------
  167.   int paintLabel( int pic, int x, int y, int w, int h, int col, str ser ) {
  168.     SetFont( h - 5, "MS ゴシック", 128,0,0,0,600 );
  169.     TextColor( 255,255,255 ); BackMode(1);
  170.     paintButton( pic, x, y, w,h, col, 0x808080, 0xffffff );
  171.     TextWrite( ser, pic, x + 5, y + 2 );
  172.   } // method end
  173.   
  174.     // DIR ----------------------------------------------------------------
  175.   str getDir( str fname ) {
  176.     int i;
  177.     int len;
  178.     str s;
  179.     len = StrLen( fname );
  180.     i = len; if ( i == 0 ) { return( "" ); }
  181.     getDirL1:;
  182.    
  183.     s = SubStr( fname, i-1, 1 );
  184.     if ( s == "\" ) {  return( SubStr( fname, 0, i ) ); }
  185.     else            { i = i - 1; goto getDirL1; }
  186.   } // method end
  187.  
  188.  
  189.     // CUT DIR ------------------------------------------------------------
  190.   str cutDir( str fname ) {
  191.     int i, len;
  192.     len = StrLen( fname );
  193.     i = len; if ( i == 0 ) { return( "" ); }
  194.     cutDirL1:;
  195.     if ( i == 0 ) { return(""); }
  196.     if ( SubStr( fname, i-1, 1) == "\" ) {
  197.       return( SubStr( fname, i, len - i ) );
  198.     }
  199.     else { i=i-1; goto cutDirL1; }
  200.   } // method end
  201.  
  202.