CLIPPER c_fwrite (void) { int file_handle; char *line; USHORT line_size; if (PCOUNT == 3 && ISNUM(FILE_HANDLE) && ISCHAR(WRITE_LINE) && ISNUM(LINE_SIZE) && ISBYREF(LINE_SIZE)) { /* convert clipper parameters into C types... */ file_handle = _parni(FILE_HANDLE); line_size = _parni(LINE_SIZE); line = _parc(WRITE_LINE); /* call C write function... */ if ( _fsWrite(file_handle, line, line_size) < line_size ) { _storni (0, LINE_SIZE); _ret(); return; } /* flush the data to file without closing it... */ if (asm_commit(file_handle)) _storni (0, LINE_SIZE); } else /* update line_size to zero... */ _storni (0, LINE_SIZE); _ret(); /* returns NIL */ }
//---------------------------------------------------------------------------// CLIPPER AWBRWROWDIM( void ) { HWND hWnd = (HWND) _parnl( 1 ); WORD wRow = (WORD) _parnl( 2 ); HFONT hFont = (HFONT) _parnl( 3 ); HFONT hOldFont; HDC hDC = GetDC( hWnd ); TEXTMETRIC tm; if( hFont ) hOldFont = SelectObject( hDC, hFont ); GetTextMetrics( hDC, &tm ); tm.tmHeight += 1; if( hFont ) SelectObject( hDC, hOldFont ); ReleaseDC( hWnd, hDC ); _reta( 2 ); _storni( tm.tmHeight * wRow++, -1, 1 ); _storni( tm.tmHeight * wRow, -1, 2 ); }
CLIPPER veri_recv() { unsigned char buffer[100]; int data=0,i; long far *timer_ticks = (long far *) 0x0040006CL; long timein = *timer_ticks+1080L; char far * str_txt; if ( PCOUNT == 2 && ISBYREF(BYTES_READ) && ISNUM(BYTES_READ) && ISBYREF(STR_TXT) && ISCHAR(STR_TXT) ) { str_txt = _parc(STR_TXT); i = 0; while ( ((data & 0x00ff) != 0x03) && ( timein > *timer_ticks )) { if (pfl_com_sts(port_no) & DATA_READY) { data = pfl_com_drecv(); buffer[i++] = (unsigned char) (data & 0x00ff); } } _storni(i,BYTES_READ); _storclen(buffer,i,STR_TXT); _retni(NORMAL); } else _retni(INVP); }
//---------------------------------------------------------------------------// CLIPPER WBRWRECT( void ) // ( hWnd, nRow, aSizes, nFirstItem, nCol, // nLineStyle, nWidthVScroll ) { HWND hWnd = ( HWND ) _parnl( 1 ); HDC hDC = GetDC( hWnd ); WORD wRow = _parni( 2 ); WORD wHeight ; RECT rct; WORD nStyle = ISNUM( 6 ) ? _parni( 6 ) : -1 ; // CeSoTech void * paSizes = _param( 3, S_ARRAY ); WORD wLen = _VARRAYLEN( paSizes ); WORD wIndex = _parni( 4 ); WORD wCol = _parni( 5 ); WORD wMaxRight; LONG l; if( !wCol || wCol > wLen ) return; GetWindowRect( hWnd, &rct ); wMaxRight = rct.right - 2; wHeight = wLineHeight + 1 ; rct.top = rct.top + ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * (wRow-1) ) ; rct.bottom = rct.top + wHeight; rct.right = rct.left; while( wIndex <= wCol ) { rct.left = rct.right; rct.right = ( wIndex == wLen && bAdjLastCol ? wMaxRight : rct.left + GetInt( paSizes, wIndex ) ); if( rct.right >= wMaxRight ) { wIndex = wCol + 1; // ya no pintamos m s rct.right = wMaxRight; } else wIndex++; } ReleaseDC( hWnd, hDC ); _reta( 4 ); // Si es un estilo sin separadores horizontales, pintar uno mas arriba //CeSoTech para que que bien completa el area !!! if (nStyle == 0 || nStyle == 5 || nStyle == 6 || nStyle == 9 || nStyle == 10) rct.top-- ; // Las coord.de edicion deberan ser mas arriba tambien !!! _storni( rct.top, -1, 1 ); _storni( rct.left, -1, 2 ); _storni( rct.bottom, -1, 3 ); _storni( ( wMaxRight <= rct.right ) ? wMaxRight - _parni( 7 ) : rct.right, -1, 4 ); }
//---------------------------------------------------------------------------// CLIPPER WBRWLINE( void ) // ( hWnd, hDC, nRow, aText, aSizes, nFirstItem, ; // nClrFore, nClrBack, hFont, lTree, aJustify, nPressed, // nStyle, nColAct, lFocused ) // bTextColor, bBkColor, nClrLine, lFooter, lSelect, // bFont, lDrawFocusRect ) // New's by CesoTech { HWND hWnd = (HWND) _parnl( 1 ); HDC hDC = (HDC) _parnl( 2 ); WORD wRow = _parni( 3 ); BOOL bDestroyDC = FALSE; WORD wHeight; RECT rct, box; void * bClrFore; void * bClrBack; COLORREF clrFore = 0; COLORREF clrBack = 0; HPEN hGrayPen ; HPEN hWhitePen ; HFONT hFont = (HFONT) _parnl( 9 ); HFONT hOldFont; BOOL bTree = _parl( 10 ); BOOL bFooter = ISLOGICAL( 19 ) ? _parl( 19 ) : FALSE ; // CeSoTech WORD nHeightCtrl ; // by CeSoTech hGrayPen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNSHADOW ) ) ; // RGB( 128, 128, 128 ) ); hWhitePen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNHIGHLIGHT ) ); // GetStockObject( WHITE_PEN ); if( PCOUNT() > 6 ) { if( ISBLOCK( 7 ) ) { bClrFore = _param( 7, -1 ); _cEval0( bClrFore ); clrFore = _parnl( -1 ); } else { clrFore = _parnl( 7 ); } } if( PCOUNT() > 7 ) { if( ISBLOCK( 8 ) ) { bClrBack = _param( 8, -1 ); _cEval0( bClrBack ); clrBack = _parnl( -1 ); } else { clrBack = _parnl( 8 ); } } if( ! hDC ) { bDestroyDC = TRUE; hDC = GetDC( hWnd ); } if( hFont ) hOldFont = SelectObject( hDC, hFont ); GetClientRect( hWnd, &rct ); nHeightCtrl = rct.bottom-rct.top ; // by CeSoTech SetTextColor( hDC, clrFore ); SetBkColor( hDC, clrBack ); wHeight = wLineHeight + 1 ; if ( ( wRow == 0 ) && bDrawHeaders ) // Es una Cabecera wHeight = wHeaderHeight + 1 ; if ( ! bFooter ) { if ( ( wRow == 0 ) && bDrawHeaders ) // Es una Cabecera { rct.top = 0 ; rct.bottom = wHeaderHeight + 1 ; } else { rct.top = ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * (wRow-1) ) ; rct.bottom = ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * wRow) ; } } else { rct.top = rct.bottom - (wFooterHeight+1) ; } rct.left = 0; PaintTheLine( hDC, &rct, _parni( 6 ), _param( 4, -1 ), _param( 5, -1 ), hWhitePen, hGrayPen, bTree, ISARRAY(11) ? _param( 11, -1 ) : 0, _parni( 12 ), (wRow == 0), _parni( 13 ), _parni( 14 ), _parl( 15 ), ISBLOCK( 16 ) ? _param( 16, -1 ) : 0, // CeSoTech ISBLOCK( 17 ) ? _param( 17, -1 ) : 0, // CeSoTech wRow, nHeightCtrl, // CeSoTech ISNUM( 18 ) ? _parnl( 18 ) : -1, // CeSoTech bFooter, // CeSoTech ISLOGICAL( 20 ) ? _parl( 20 ) : FALSE, // CeSoTech ISBLOCK( 21 ) ? _param( 21, -1 ) : 0, // CeSoTech ISLOGICAL( 22 ) ? _parl( 22 ) : FALSE );// CeSoTech DeleteObject( hGrayPen ); DeleteObject( hWhitePen ); if( hFont ) SelectObject( hDC, hOldFont ); if( bDestroyDC ) ReleaseDC( hWnd, hDC ); _reta( 2 ); _storni( rct.top, -1, 1 ); _storni( rct.bottom, -1, 2 ); }
CLIPPER HB_UNDOC15() { _retni( _parni( 1 ) ); _storni( 4321, -1 ); }
CLIPPER HB_INT4() { _storni( _parni( 2 ), 1, 1 ); }
CLIPPER read_scan(void) { int barcode_sts; /* scanner input status */ int barcode_len; /* holds the no. of bytes actually read */ int check_flag = 0; int label_chkdigit,chkdigit; if ((PCOUNT >= 2) && ISBYREF(BYTES_READ) && ISNUM(BYTES_READ) && ISBYREF(STR_BUFF) && ISCHAR(STR_BUFF)) { /* verify initial status */ if (chk_init_flag(POS_SCAN) == 0) { _retni(DEV_NOT_EXIST); return; } /* device not yet initialized */ /* not in asynchronous scanning mode */ if (!async_scan) { _retni(INVP); return; } /* read scanner input */ if ((barcode_sts = pfl_get_label(label_buff)) == -1) barcode_sts = READ_ERR; /* no available data to be fetched */ else { barcode_len = barcode_sts & 0x00ff; /* get label length */ barcode_sts >>= 8; /* label status */ barcode_sts = (barcode_sts == 0)? NORMAL: SCAN_ERR; /* status */ if ( PCOUNT == 3 ) { int check_flag = _parl(CHECK_FLAG); if (check_flag) { barcode_len--; label_chkdigit = (int) label_buff[barcode_len] - 48 ; chkdigit = checkdgt(label_buff,barcode_len); if ( label_chkdigit != chkdigit ) barcode_sts = SCAN_ERR; } } _storni(barcode_len, BYTES_READ); /* length */ *(label_buff+barcode_len+1) = '\0'; /* insert a NULL character */ _storclen(label_buff, barcode_len+2, STR_BUFF); /* bar code data */ } _retni(barcode_sts); } else
CLIPPER WBrwRect( PARAMS ) // ( hWnd, nRow, aSizes, nFirstItem, nCol, // nLineStyle, nWidthVScroll ) #endif { HWND hWnd = ( HWND ) _parnl( 1 ); HDC hDC = GetDC( hWnd ); WORD wRow = _parni( 2 ); WORD wHeight ; RECT rct; WORD nStyle = ISNUM( 6 ) ? _parni( 6 ) : -1 ; // CeSoTech #ifdef __CLIPPER__ PCLIPVAR paSizes = _param( 3, 0x8000 ); WORD wLen = _VARRAYLEN( paSizes ); #else #ifdef __HARBOUR__ // void * paSizes = ( void * ) _param( 3, HB_IT_ARRAY ); WORD wLen = _parinfa( 3, 0 ); #else void * paSizes = ( void * ) _param( 3, 0x8000 ); WORD wLen = _VARRAYLEN( paSizes ); #endif #endif WORD wIndex = _parni( 4 ); WORD wCol = _parni( 5 ); WORD wMaxRight; LONG l; if( !wCol || wCol > wLen ) return; GetWindowRect( hWnd, &rct ); wMaxRight = rct.right - 2; wHeight = wLineHeight + 1 ; rct.top = rct.top + ( bDrawHeaders ? wHeaderHeight+1 : 0 ) + (wHeight * (wRow-1) ) ; rct.bottom = rct.top + wHeight; rct.right = rct.left; while( wIndex <= wCol ) { rct.left = rct.right; #ifndef __FLAT__ rct.right = ( wIndex == wLen && bAdjLastCol ? wMaxRight : rct.left + GetInt( paSizes, wIndex ) ); #else #ifndef __HARBOUR__ #define _parnl(x,y) PARNL(x,params,y); #endif l = _parnl( 3, wIndex ); rct.right = ( wIndex == wLen && bAdjLastCol ? wMaxRight : rct.left + l ); #endif if( rct.right >= wMaxRight ) { wIndex = wCol + 1; // ya no pintamos m s rct.right = wMaxRight; } else wIndex++; } ReleaseDC( hWnd, hDC ); _reta( 4 ); #ifdef __XPP__ #define _storni( x, y, z ) STORNI( x, params, y, z ) #endif // Si es un estilo sin separadores horizontales, pintar uno mas arriba //CeSoTech para que que bien completa el area !!! if (nStyle == 0 || nStyle == 5 || nStyle == 6 || nStyle == 9 || nStyle == 10) rct.top-- ; // Las coord.de edicion deberan ser mas arriba tambien !!! _storni( rct.top, -1, 1 ); _storni( rct.left, -1, 2 ); _storni( rct.bottom, -1, 3 ); _storni( ( wMaxRight <= rct.right ) ? wMaxRight - _parni( 7 ) : rct.right, -1, 4 ); }