Signatures

Postby reinaldocrespo » Thu Oct 09, 2008 1:33 pm

Would you please review my code?
Code: Select all  Expand view
#INCLUDE "FIVEWIN.CH"

function CaptureSignaure( oOwner )
local oDlg, ;
      oSig, ;
      nHdc, ;
      nOldX := -1, ;
      nOldY := -1, ;
      cFile := lower( GetTempDir() + "\signature.bmp" )

   DEFINE DIALOG oDlg TITLE "Signature" OF oOwner FROM 0,0 TO 150,350 PIXEL

   @ 15, 5 SAY oSig PROMPT "" SIZE 150, 40 PIXEL BORDER OF oDlg
   @ 01, 5 BUTTON "Clear" SIZE 25, 10 PIXEL ACTION oSig:refresh(.t.) OF oDlg
   @ 01, 60 BUTTON "Save" SIZE 25, 10 PIXEL OF odlg ACTION ;
      ( oSig:saveToBmp( cfile ), ;
      oSig:refresh(.t.), ;
      ReleaseDC( oSig:hWnd, oSig:hDC ), oDlg:end() )

   nHdc := GetDC( oSig:hWnd )

   oSig:bLButtonUp := { |x,y,z| DoDraw( nHdc, y+1, x+1,@noldx,@noldy ), nOldX := -1, nOldY := -1 }
   oSig:bMMoved := { |x,y,z| DoDraw( nHdc, y, x ,@noldx,@noldy) }
   oSig:bLClicked := { |x,y,z| DoDraw( nHdc, y, x ,@noldx,@noldy) }

   ACTIVATE DIALOG oDlg CENTER

return cFile

*------------------------------------------------------------------------------------------
STATIC Function DoDraw( hDc, x, y, noldx, noldy )

   If nOldX == -1 .And. nOldY == -1
      nOldX := x
      nOldY := y
      MoveToEx( hDC, x, y )
   Else
      LineTo( hDc,x,y )
   EndIf

RETURN Nil

*------------------------------------------------------------------------------------------
DLL STATIC FUNCTION MoveToEx( hWnd AS HDC, nX AS _INT, nY AS _INT, NULL AS _INT ) AS BOOL PASCAL LIB "coredll.dll"


Is it supposed to work? Can you test it on your environment? On my tets, it is not drawing.

Thank you,



Reinaldo.
User avatar
reinaldocrespo
 
Posts: 973
Joined: Thu Nov 17, 2005 5:49 pm
Location: Fort Lauderdale, FL

Postby Antonio Linares » Thu Oct 09, 2008 2:41 pm

Reinaldo,

Here you have it :-)

signatur.prg
Code: Select all  Expand view
#include "FiveWin.ch"

function CaptureSignature()

   local oDlg, oSig, lPaint := .F., cFile := Lower( "signature.bmp" ), hDC

   DEFINE DIALOG oDlg TITLE "Signature" FROM 0, 0 TO 150, 350 PIXEL

   @ 15, 5 SAY oSig PROMPT "" SIZE 150, 40 PIXEL BORDER OF oDlg
   
   @ 01, 5 BUTTON "Clear" SIZE 25, 10 PIXEL ACTION oSig:refresh(.t.) OF oDlg
   
   @ 01, 60 BUTTON "Save" SIZE 25, 10 PIXEL OF odlg ;
      ACTION ( oSig:SaveToBmp( cFile ), oDlg:End() )

   oSig:lWantClick := .T.
   oSig:bLButtonUp := { | x, y, z | DoDraw( hDC, y+1, x+1, lPaint := .F. ) }
   oSig:bMMoved    := { | x, y, z | DoDraw( hDC, y, x , lPaint ) }
   oSig:bLClicked  := { | x, y, z | DoDraw( hDC, y, x, lPaint := .T. ) }

   ACTIVATE DIALOG oDlg CENTER ;
      ON INIT ( hDC := GetDC( oSig:hWnd ) ) ;
      VALID ( ReleaseDC( oSig:hWnd, hDC ), .T. )

return nil

static function DoDraw( hDc, x, y, lPaint )

   if ! lPaint
      MoveTo( hDC, x, y )
   else
      LineTo( hDc, x, y )
   endIf

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41467
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby reinaldocrespo » Thu Oct 09, 2008 5:59 pm

Antonio;

Yes it works. Thank you for your help.


Reinaldo.
User avatar
reinaldocrespo
 
Posts: 973
Joined: Thu Nov 17, 2005 5:49 pm
Location: Fort Lauderdale, FL

Previous

Return to FiveWin for Pocket PC

Who is online

Users browsing this forum: No registered users and 10 guests