FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Pocket PC Signatures
Posts: 946
Joined: Thu Oct 06, 2005 07:05 PM
Signatures
Posted: Sun Dec 24, 2006 06:28 AM

Excellent , it works very nicely. Saving the say dc fixes definitely the problem.

Thank you Bill

Merry Christmas.

:D

http://www.cbati.com

Uestudio
Fwh 13.05 Harbour 3.2 MSVC 2013
Posts: 946
Joined: Thu Oct 06, 2005 07:05 PM
Signatures
Posted: Sun Dec 24, 2006 07:20 AM

Question to Antonio

nHdc := GetDC( oSig:hWnd )

Will the Dc be automatically released at the end of the function or do we have to releasedc() ?

Thanks for reply

I made some minor changes to Bill's sample, setting locals variables instead of public , quitting after signature, here is mine

include "C:\FWPPC\INCLUDE\FWCE.ch"

include "C:\FWPPC\INCLUDE\DLL.ch"

function Main()
local oMain, oSig, nHdc, ;
nOldX := -1, ;
nOldY := -1

DEFINE WINDOW oMain TITLE "Signature"

@40,5 SAY oSig PROMPT "" SIZE 230,150 PIXEL BORDER

@15, 5 BUTTON "Effacer" SIZE 50,20 PIXEL ACTION oSig:refresh(.t.)
@15,60 BUTTON "Sauver" SIZE 50,20 PIXEL ACTION ( oSig:saveToBmp( CurDir() + "\MySig.BMP" ), oSig:refresh(.t.), OMAIN: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 WINDOW oMain

return nil

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"

http://www.cbati.com

Uestudio
Fwh 13.05 Harbour 3.2 MSVC 2013
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Signatures
Posted: Sun Dec 24, 2006 09:18 AM
Richard Chidiak wrote:nHdc := GetDC( oSig:hWnd )

Will the Dc be automatically released at the end of the function or do we have to releasedc() ?


You have to release it.

EMG
Posts: 946
Joined: Thu Oct 06, 2005 07:05 PM
Signatures
Posted: Sun Dec 24, 2006 09:43 AM

Enrico

Thank you

Richard

http://www.cbati.com

Uestudio
Fwh 13.05 Harbour 3.2 MSVC 2013
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Signatures
Posted: Sun Dec 24, 2006 10:07 AM

Bill,

You may use FWPPC built-in MoveTo() function instead of DLL FUNCTION MoveToEx(), this way you eliminate the call to an external DLL and your code will be faster:

MoveTo( hDC, nCol, nRow )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Signatures
Posted: Sun Dec 24, 2006 10:09 AM

Richard,

ReleaseDC( oSig:hWnd, oSig:hDC )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Signatures
Posted: Sun Dec 24, 2006 10:20 AM

Bill,

Yes, it works nicer and better using a SAY control, thanks! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 946
Joined: Thu Oct 06, 2005 07:05 PM
Signatures
Posted: Sun Dec 24, 2006 10:25 AM

This is the final test that works excellent. Thank you all for the help.

include "C:\FWPPC\INCLUDE\FWCE.ch"

include "C:\FWPPC\INCLUDE\DLL.ch"

function Main()

local oMain, oSig, nHdc, ;
nOldX := -1, ;
nOldY := -1

LOCAL DFILE := CURDIR() + "\MYSIGN.BMP"

DEFINE WINDOW oMain TITLE "Signature"

@40,5 SAY oSig PROMPT "" SIZE 230,150 PIXEL BORDER

@15, 5 BUTTON "Clear" SIZE 50,20 PIXEL ACTION oSig:refresh(.t.)
@15,60 BUTTON "Save" SIZE 50,20 PIXEL ACTION ( oSig:saveToBmp( DFIle ), oSig:refresh(.t.), ReleaseDC( oSig:hWnd, oSig:hDC ), OMAIN: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 WINDOW oMain

return nil

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

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

RETURN Nil

http://www.cbati.com

Uestudio
Fwh 13.05 Harbour 3.2 MSVC 2013
Posts: 42
Joined: Wed Oct 26, 2005 01:20 PM
Signatures
Posted: Sun Dec 24, 2006 02:12 PM

Richard, very nice! Thanks for cleaning up my code. Antonio, thanks for the info on the built-in FW functions. I'm still learning the FW syntax and functions.

Also, Antonio thank you for the incredible tool that FWPPC is. It has enabled us to deploy a Mobile app in very short time!

Merry Christmas to all!

Bill Simmeth

Merchant Software Corp

Marshall, Virginia USA
Posts: 12
Joined: Wed Jul 09, 2008 07:07 PM
Monochrome bitmap
Posted: Fri Jul 18, 2008 09:08 AM

Thankyou Richard and Bill this code works very well.

The resulting BMP is 256 colours. I have a printer attached to my device and a DLL that will except the following.

PrintGraphic("MYSIG.BMP")

But you guessed it will only work if the BMP is 2 colours. Does anyone have a technique for converting the colour bit depth in FWPPC.

Regards



Chris Millard
Posts: 37
Joined: Sun Aug 03, 2008 08:02 AM
Signatures
Posted: Fri Sep 12, 2008 04:58 PM

Hi All, specally Maurizio,
i must send the signature over Cell phone to a Webserver, so the data must be as small as possible (max. 1k packages). So i like the idea of Maurizio, only to send the array data. I already have implemented this and get filesizes of 1200 to 1500 Byte, which i can split into 2 files.

Questions: Is there a better solution for packing the data ?

If not, can someone point me to how to rebuild the signature from the array data or have a sample code for this ?

Best regards

Wolfgang Ciriack
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Signatures
Posted: Mon Sep 15, 2008 10:17 AM

Hello Wolfang

include "report.ch"

Static Function PrintBmp(cFileBmp)
Local aDati := {}
Local oPrn,oPen,oFont
Local cTxt := ""
LOCAL nX
Local n1 := 0
Local n2 := 0
local nRow := 0, nCol := 0
Local nMaxRow := 0
Local nZoom := 2
IF file(cFileBmp)
cTxt := memoread(cFileBmp)
aDati := aRead(cTxt)
ELSE
Return FALSE
ENDIF

DEFINE PEN oPen WIDTH 3
PRINT oPrn NAME "Test"  TO  cStampante   // "Comanda_1"  // PREVIEW //  TO "PDFCreator" //PREVIEW
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0, -12 OF oPrn

PAGE
FOR nX := 2 TO len(aDAti) - 1
IF n1 > 0
IF aDati[nX,1] < 1000
oPrn:Line(nRow + aDAti[nX,1]nZoom,aDati[nX,2]nZoom,nRow + n2nZoom,n1nZoom,oPen )
IIF( nMaxRow < nRow + aDAti[nX,1] nZoom , nMaxRow := nRow + aDAti[nX,1]nZoom , )
ELSE
n1 := 0
n2 := 0
loop
ENDIF
ENDIF
n1 := aDAti[nX,2]
n2 := aDAti[nX,1]
NEXT

ENDPAGE
ENDPRINT
oFont:End()

Return TRUE

Regards MAurizio

Posts: 37
Joined: Sun Aug 03, 2008 08:02 AM
Signatures
Posted: Tue Sep 16, 2008 02:44 PM

Hello Maurizio,
thank you very much, now i only must convert this to XBase++ :)

Best regards

Wolfgang Ciriack
Posts: 990
Joined: Thu Nov 17, 2005 05:49 PM
Signatures
Posted: Wed Oct 08, 2008 03:52 PM

Would this piece of code work with fwh?

Reinaldo.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Signatures
Posted: Thu Oct 09, 2008 07:40 AM

Reinaldo,

Yes, it should work fine with FWH :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com