#include "Fivewin.ch"
#define HB_ZEBRA_FLAG_DATAMATRIX_RECTANGLE 0x0200
FUNCTION MAIN()
LOCAL oPrn
PRINT oPrn PREVIEW
PAGE
DATAMATRIX( oPrn, 500, 500, "12345678901234567890123456789012345678901234567890", 1000, 1000, HB_ZEBRA_FLAG_DATAMATRIX_RECTANGLE )
DATAMATRIX( oPrn, 1000, 500, "12345678901234567890123456789012345678901234567890", 1000, 1000, HB_ZEBRA_FLAG_DATAMATRIX_RECTANGLE )
DATAMATRIX( oPrn, 1500, 500, "18201106000006117254120000195947121000000010003896", 1000, 1000, HB_ZEBRA_FLAG_DATAMATRIX_RECTANGLE )
ENDPAGE
ENDPRINT
RETURN NIL
FUNCTION DATAMATRIX( oPrn, nRow, nCol, cCode, nWidth, nHeight, nFlags, nCodeWidth, nCodeHeight )
LOCAL hDCMem := CREATECOMPATIBLEDC( oPrn:hDC )
LOCAL hBBrush := CREATESOLIDBRUSH( CLR_BLACK )
LOCAL hWBrush := CREATESOLIDBRUSH( CLR_WHITE )
LOCAL hBmp := CREATECOMPATIBLEBITMAP( oPrn:hDC, nWidth, nHeight )
LOCAL hBmpOld := SELECTOBJECT( hDCMem, hBmp )
LOCAL hZebra := HB_ZEBRA_CREATE_DATAMATRIX( cCode, nFlags )
LOCAL hDib
DEFAULT nCodeWidth := 10
DEFAULT nCodeHeight := 10
FILLRECT( hDCMem, { 0, 0, nHeight, nWidth }, hWBrush )
HB_ZEBRA_DRAW( hZebra, { | x, y, w, h | FillRect( hDCMem, { y, x, y + h, x + w }, hBBrush ) }, 0, 0, nCodeWidth, nCodeHeight )
HB_ZEBRA_DESTROY( hZebra )
SELECTOBJECT( hDCMem, hBmpOld )
hDib = DIBFROMBITMAP( hBmp )
DIBDRAW( oPrn:hDCOut, hDib, , nRow, nCol )
GLOBALFREE( hDib )
DELETEOBJECT( hBmp )
DELETEOBJECT( hBBrush )
DELETEOBJECT( hWBrush )
DELETEDC( hDCMem )
RETURN NIL