home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SAMPLES / LINEAS.PRG < prev    next >
Text File  |  1994-01-16  |  2KB  |  106 lines

  1. // Ejemplo desarrollado por Carlos Ruiz
  2.  
  3. // Carlos ha colaborado con nosotros probando FiveWin
  4.  
  5. #include "FiveWin.ch"
  6.  
  7. //----------------------------------------------------------------------------//
  8.  
  9. static aPoints, nCount, nColor := 0, oWnd
  10.  
  11. function Main()
  12.  
  13.    aPoints := Array( 1000 )
  14.    nCount  := 0
  15.    
  16.    DEFINE WINDOW oWnd FROM 1, 1 TO 30, 50 ;
  17.       TITLE OemToAnsi( "FiveWin 1.0 - Pulsar en la pantalla con el ratón" ) ;
  18.       MENU BuildMenu()
  19.  
  20.    oWnd:bLClicked := { | y, x, flags | Click( y, x ) }
  21.    oWnd:bPainted  := { || MiPaint() }
  22.    
  23.    ACTIVATE WINDOW oWnd
  24.  
  25. return 0
  26.  
  27. //----------------------------------------------------------------------------//
  28.  
  29. function BuildMenu()
  30.  
  31.    local oMenu
  32.  
  33.    MENU oMenu
  34.       MENUITEM "&Operaciones"
  35.       MENU
  36.          MENUITEM "&Limpiar"  ACTION Limpiar()
  37.          MENUITEM "&Undo"     ACTION Undo()
  38.          SEPARATOR
  39.          MENUITEM "&Color"    ACTION NewColor()
  40.       ENDMENU
  41.  
  42.       MENUITEM "&Salir"       ACTION oWnd:End()
  43.  
  44.    ENDMENU
  45.  
  46. return oMenu
  47.  
  48. //----------------------------------------------------------------------------//
  49.  
  50. STATIC PROCEDURE Limpiar()
  51.    nCount := 0
  52.    oWnd:Refresh()
  53.  
  54. //----------------------------------------------------------------------------//
  55.  
  56. STATIC PROCEDURE Undo()
  57.    if nCount > 0
  58.       nCount--
  59.       oWnd:Refresh()
  60.    endif
  61.  
  62. //----------------------------------------------------------------------------//
  63.  
  64. STATIC PROCEDURE NewColor()
  65.    LOCAL OldColor := nColor
  66.    if ( nColor := ChooseColor() ) == -1
  67.       nColor := OldColor
  68.    endif
  69.  
  70. //----------------------------------------------------------------------------//
  71.  
  72. STATIC PROCEDURE Click( x, y )
  73.  
  74.    aPoints[ ++nCount ] := { y, x }
  75.  
  76.    DrawLine( x, y )
  77.    RETURN
  78.  
  79. //----------------------------------------------------------------------------//
  80.  
  81. STATIC PROCEDURE DrawLine( x, y )
  82.    LOCAL n, hPen, hOldPen
  83.  
  84.    oWnd:GetDc()
  85.    hPen := CreatePen( 0, 1, nColor )
  86.    hOldPen := SelectObject( oWnd:hDc, hPen )
  87.  
  88.    for n := 1 to nCount - 1
  89.       MoveTo( oWnd:hDC, aPoints[ n, 1 ], aPoints[ n, 2 ] )
  90.       LineTo( oWnd:hDC, y, x )
  91.    next
  92.  
  93.    SelectObject( oWnd:hDc, hOldPen )
  94.    DeleteObject( hPen )
  95.    oWnd:ReleaseDc()
  96.    RETURN
  97.  
  98. //----------------------------------------------------------------------------//
  99.  
  100. STATIC PROCEDURE MiPaint()
  101.    LOCAL n
  102.    for n := 1 to nCount
  103.       DrawLine( aPoints[n, 2], aPoints[n, 1] )
  104.    next
  105.    RETURN
  106.