Alguien tiene la librería tsbrowse compilada para las últimas versiones de Harbour?
O Alguien sabe como compilarla?
/***************************************************************
This file contains the special painting routines used by TSBrowse Class
Last update: November 30th, 2009
***************************************************************/
#include <hbApi.h> /* set your own path if needed */
//#include <WinTen.h> /* set your own path if needed */
#include <Windows.h>
//#include <ClipApi.h> /* set your own path if needed */
//#include <shellapi.h>
//#include <StdLib.h>
#define _HB_API_INTERNAL_
void WndBoxDraw( HDC, LPRECT, HPEN, HPEN, int, BOOL ) ;
void cDrawCursor( HWND, LPRECT, long, COLORREF ) ;
void DrawCheck( HDC, LPRECT, HPEN, int, BOOL ) ;
DWORD GetTextExtent( HDC, LPCSTR, int ) ;
extern void DrawBitmap( HDC, HBITMAP, WORD wCol, WORD wRow, WORD wWidth, WORD wHeight, DWORD dwRaster ) ;
extern void DrawMasked( HDC hdc, HBITMAP hbm, WORD y, WORD x ) ;
extern void MaskRegion( HDC hDC, RECT * rct, COLORREF cTransparent, COLORREF cBackground ) ;
static void GoToPoint( HDC, int, int ) ;
static void DegradColor( HDC, RECT *, COLORREF, signed long ) ;
//---------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER TSDrawCell( ) // ( hWnd, hDC, nRow, nColumn , nWidth ,
// uData, nAlign , nClrFore, nClrBack ,
// hFont, nBitmap, nHeightCell,
// b3DLook, nLineStyle, nClrLine, nHeadFoot,
// nHeightHead, nHeightFoot, hHeightSuper,
// lAdjBmpl, lMultiLine, nVAlign, nVertText,
// nClrTo, lDegrad, hBrush )
#else
HARBOUR HB_FUN_TSDRAWCELL( )
#endif
{
HWND hWnd = (HWND) hb_parni( 1 ) ;
HDC hDC = (HDC) hb_parni( 2 ) ;
int nRow = hb_parni( 3 ) ;
int nColumn = hb_parni( 4 ) ;
int nWidth = hb_parni( 5 ) ;
LPSTR cData = (LPSTR) hb_parc( 6 ) ;
int nLen = hb_parclen( 6 ) ;
DWORD nAlign = hb_parnl( 7 ) ;
COLORREF clrFore = hb_parnl( 8 ) ;
COLORREF clrBack = hb_parnl( 9 ) ;
HFONT hFont = (HFONT) hb_parni( 10 ) ;
HBITMAP hBitMap = (HBITMAP) hb_parni( 11 ) ;
int nHeightCell = hb_parni( 12 ) ;
BOOL b3DLook = hb_parl( 13 ) ;
int nLineStyle = hb_parni( 14 ) ;
COLORREF clrLine = hb_parnl( 15 ) ;
int nHeadFoot = hb_parni( 16 ) ;
int nHeightHead = hb_parni( 17 ) ;
int nHeightFoot = hb_parni( 18 ) ;
int nHeightSuper = hb_parni( 19 ) ;
BOOL bAdjBmp = hb_parl( 20 ) ;
BOOL bMultiLine = hb_parl( 21 ) ;
int nVAlign = hb_parni( 22 ) ;
int nVertText = hb_parni( 23 ) ;
COLORREF clrTo = hb_parnl( 24 ) ;
BOOL bOpaque = hb_parl( 25 ) ;
HBRUSH wBrush = (HBRUSH) hb_parnl( 26 ) ;
BOOL b3DInv = ( HB_ISLOG( 27 ) ? ! hb_parl( 27 ) : FALSE ) ;
BOOL b3D = ( HB_ISLOG( 27 ) ? TRUE : FALSE ) ;
COLORREF nClr3DL = hb_parnl( 28 ) ;
COLORREF nClr3DS = hb_parnl( 29 ) ;
long lCursor = hb_parnl( 30 ) ;
int ixLayOut = HIWORD( nAlign ) ;
int iAlign = LOWORD( nAlign ) ;
int iTxtW = LOWORD( GetTextExtent( hDC, cData, nLen ) ) ;
BOOL bGrid = ( nLineStyle > 0 ? TRUE : FALSE ) ;
BOOL bHeader = ( nHeadFoot == 1 ? TRUE : FALSE ) ;
BOOL bFooter = ( nHeadFoot == 2 ? TRUE : FALSE ) ;
BOOL bSuper = ( nHeadFoot == 3 ? TRUE : FALSE ) ;
BOOL bChecked = ( nVertText == 3 ? TRUE : FALSE ) ;
BOOL bBrush = ( wBrush ? TRUE : FALSE ) ;
BOOL bDegrad = ( bBrush || clrTo == clrBack ? FALSE : TRUE ) ;
HFONT hOldFont ;
BOOL bDestroyDC = FALSE ;
HPEN hGrayPen = CreatePen( PS_SOLID, 1, clrLine );
HPEN hWhitePen = CreatePen( PS_SOLID, 1, GetSysColor( COLOR_BTNHIGHLIGHT ) ) ;
RECT rct ;
BITMAP bm ;
int nTop, nLeft, nBkOld, iFlags ;
if( ! hDC )
{
bDestroyDC = TRUE ;
hDC = GetDC( hWnd ) ;
}
if( hFont )
hOldFont = SelectObject( hDC, hFont ) ;
GetClientRect( hWnd, &rct ) ;
SetTextColor( hDC, clrFore ) ;
SetBkColor( hDC, clrBack ) ;
if( nRow == 0 )
rct.top = ( bHeader ? nHeightSuper - ( nHeightSuper ? 1 : 0 ) : 0 ) ;
else
rct.top = ( bFooter ? rct.bottom - nHeightFoot + 1 : nHeightHead + nHeightSuper - ( nHeightSuper ? 1 : 0 ) +
( nHeightCell * ( nRow - 1 ) ) ) ;
rct.bottom = rct.top + ( bHeader ? nHeightHead :( bSuper ? nHeightSuper : nHeightCell ) - 1 ) ;
/* Don't let left side go beyond rct.right of Client Rect. */
if( nColumn - ( rct.right - rct.left ) <= 0 )
{
rct.left = nColumn ;
/* if nWidth == -1 or -2, it indicates the last column so go to limit,
Don't let right side go beyond rct.right of Client Rect. */
if( ( nWidth >= 0 ) && ((rct.left + nWidth - rct.right) <= 0) ) // negative values have different meanings
rct.right = rct.left + nWidth ;
if( ! bDegrad )
{
rct.bottom += ( bHeader ? 0 : 1 ) ;
rct.right += 1 ;
if( ! bBrush )
ExtTextOut( hDC, rct.left, rct.top, ETO_OPAQUE | ETO_CLIPPED, &rct, "", 0, 0 ) ;
else
FillRect( hDC, &rct, wBrush ) ;
rct.bottom -= ( bHeader ? 0 : 1 ) ;
rct.right -= 1 ;
}
else
DegradColor( hDC, &rct, clrBack, clrTo ) ;
if( hBitMap )
{
if( ! bAdjBmp )
{
GetObject( hBitMap, sizeof( BITMAP ), ( LPSTR ) &bm ) ;
nTop = rct.top + ( ( rct.bottom - rct.top + 1 ) / 2 ) - ( bm.bmHeight / 2 ) ;
switch( ixLayOut ) // bitmap layout x coordinate
{
case 0: // column left
nLeft = rct.left ;
break ;
case 1: // column center (text -if any- may overwrite the bitmap)
nLeft = rct.left + ( ( rct.right - rct.left + 1 ) / 2 ) -
( bm.bmWidth / 2 ) - 1 ;
break ;
case 2: // column right
nLeft = rct.right - ( bm.bmWidth + 1 ) ;
break ;
case 3: // left of centered text
nLeft = max( rct.left, rct.left + ( ( rct.right - rct.left + 1 ) / 2 ) -
( iTxtW / 2 ) - bm.bmWidth - 2 ) ;
break ;
case 4: // right of centered text
nLeft = rct.left + ( ( rct.right - rct.left + 1 ) / 2 ) + ( iTxtW / 2 ) + 2 ;
break ;
default: // a value > 4 means specific pixel location from column left
nLeft = rct.left + ixLayOut ;
break ;
}
}
else
{
nTop = rct.top ;
nLeft = rct.left ;
}
if( b3DLook )
{
if( bAdjBmp )
{
nTop = rct.top + 1 ;
DrawBitmap( hDC, hBitMap, nTop, rct.left - 1, rct.right - rct.left + 1,
rct.bottom - rct.top - 1, 0 ) ;
hBitMap = 0 ;
if( ! bOpaque )
MaskRegion( hDC, &rct, GetPixel( hDC, nLeft, nTop ), GetBkColor( hDC ) ) ;
}
else
if( bOpaque )
DrawBitmap( hDC, hBitMap, nTop, nLeft, 0, 0, 0 ) ;
else
DrawMasked( hDC, hBitMap, nTop, nLeft ) ;
}
else
{
if( bAdjBmp)
{
DrawBitmap( hDC, hBitMap, rct.top, rct.left - 2, rct.right - rct.left + 3,
rct.bottom - rct.top - 1, 0 ) ;
hBitMap = 0 ;
if( ! bOpaque )
MaskRegion( hDC, &rct, GetPixel( hDC, nLeft, nTop ), GetBkColor( hDC ) ) ;
}
else
if( bOpaque )
DrawBitmap( hDC, hBitMap, nTop, nLeft, 0, 0, 0 ) ;
else
DrawMasked( hDC, hBitMap, nTop, nLeft ) ;
}
}
if( nLen )
{
if( iAlign == DT_LEFT )
rct.left += ( 2 + ( hBitMap && ixLayOut == 0 ? bm.bmWidth + 1 : 0 ) ) ;
if( iAlign == DT_RIGHT )
rct.right -= ( 2 + ( hBitMap && ixLayOut == 2 ? bm.bmWidth + 1 : 0 ) ) ;
if( nVertText == 1 )
{
rct.right += ( 4 * nLen ) ;
rct.bottom += 10 ;
}
iFlags = iAlign | DT_NOPREFIX | nVAlign * 4 | ( bMultiLine && nVAlign < 2 ? 0 : DT_SINGLELINE ) ;
if( ( nVertText == 3 || nVertText == 4 ) )
DrawCheck( hDC, &rct, hWhitePen, iAlign, bChecked ) ;
else
{
nBkOld = SetBkMode( hDC, TRANSPARENT ) ;
if( b3D )
{
rct.top -= 1 ;
rct.left -= 1 ;
rct.bottom -= 1 ;
rct.right -= 1 ;
SetTextColor( hDC, b3DInv ? nClr3DS : nClr3DL ) ;
DrawTextEx( hDC, cData, nLen, &rct, iFlags, NULL ) ;
rct.top += 2 ;
rct.left += 2 ;
rct.bottom += 2 ;
rct.right += 2 ;
SetTextColor( hDC, b3DInv ? nClr3DL : nClr3DS ) ;
DrawTextEx( hDC, cData, nLen, &rct, iFlags, NULL ) ;
rct.top -= 1 ;
rct.left -= 1 ;
rct.bottom -= 1 ;
rct.right -= 1 ;
SetTextColor( hDC, clrFore ) ;
}
DrawTextEx( hDC, cData, nLen, &rct, iFlags, NULL ) ;
SetBkMode( hDC, nBkOld ) ;
}
if( iAlign == DT_LEFT )
rct.left -= ( 2 + ( hBitMap && ixLayOut == 0 ? bm.bmWidth + 1 : 0 ) ) ;
if( iAlign == DT_RIGHT )
rct.right += ( 2 + ( hBitMap && ixLayOut == 2 ? bm.bmWidth + 1 : 0 ) ) ;
if( nVertText == 1 )
{
rct.right -= ( 4 * nLen ) ;
rct.bottom -= 10 ;
}
}
if( b3DLook )
{
bHeader = ( bSuper ? bSuper : bHeader ) ;
if( ( nWidth != -2 ) && bGrid ) // -1 draw gridline in phantom column; -2 don't draw gridline in phantom column
WndBoxDraw( hDC, &rct, hWhitePen, hGrayPen, b3DLook ? 4 : nLineStyle, bHeader ) ;
if( lCursor )
cDrawCursor( hWnd, &rct, lCursor, clrFore ) ;
}
else
{
bHeader = ( bFooter ? bFooter : ( bHeader || bSuper ) ) ;
if( ( nWidth != -2 ) && bGrid ) // -1 draw gridline in phantom column; -2 don't draw gridline in phantom column
WndBoxDraw( hDC, &rct, hGrayPen, hGrayPen, nLineStyle, bHeader ) ;
if( lCursor )
cDrawCursor( hWnd, &rct, lCursor, clrFore ) ;
}
}
DeleteObject( hGrayPen ) ;
DeleteObject( hWhitePen ) ;
if( hFont )
SelectObject( hDC, hOldFont ) ;
if( bDestroyDC )
ReleaseDC( hWnd, hDC ) ;
}
//--------------------------------------------------------------------------------------------------------------------//
void WndBoxDraw( HDC hDC, RECT * rct, HPEN hPUpLeft, HPEN hPBotRit, int nLineStyle, \
BOOL bHeader )
{
HPEN hOldPen = SelectObject( hDC, hPUpLeft ) ;
HPEN hBlack = CreatePen( PS_SOLID, 1, 0 ) ;
switch( nLineStyle )
{
case 0 :
break ;
case 1 :
SelectObject( hDC, hPBotRit ) ;
GoToPoint( hDC, rct->left, rct->bottom - ( bHeader ? 1 : 0 ) ) ;
LineTo( hDC, rct->right - 1, rct->bottom - ( bHeader ? 1 : 0 ) ) ;
LineTo( hDC, rct->right - 1, rct->top - 1 ) ;
if( bHeader )
LineTo( hDC, rct->left - 1, rct->top - 1 ) ;
break ;
case 2 :
SelectObject( hDC, hPBotRit ) ;
GoToPoint( hDC, rct->right - 1, rct->bottom ) ;
LineTo( hDC, rct->right - 1, rct->top - 1 ) ;
break ;
case 3 :
SelectObject( hDC, hPBotRit ) ;
GoToPoint( hDC, rct->left, rct->bottom ) ;
LineTo( hDC, rct->right, rct->bottom ) ;
break ;
case 4 :
SelectObject( hDC, hPUpLeft ) ;
GoToPoint( hDC, rct->left, rct->bottom ) ;
LineTo( hDC, rct->left, rct->top ) ;
LineTo( hDC, rct->right , rct->top ) ;
SelectObject( hDC, hPBotRit ) ;
GoToPoint( hDC, rct->left, rct->bottom - ( bHeader ? 1 : 0 ) ) ;
LineTo( hDC, rct->right - 1, rct->bottom - ( bHeader ? 1 : 0 ) ) ;
LineTo( hDC, rct->right - 1, rct->top - 1 ) ;
break ;
case 5 :
rct->top += 1 ;
rct->left += 1 ;
rct->bottom -= 1 ;
rct->right -= 1 ;
DrawFocusRect( hDC, rct );
break ;
}
SelectObject( hDC, hOldPen );
DeleteObject( hBlack );
}
//---------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER TSBrwScrol( ) // l( hWnd, nDir, hFont, nHeightCell, nHeightHead,
// nHeightFoot, nHeightSuper )
#else
HARBOUR HB_FUN_TSBRWSCROLL( )
#endif
{
HWND hWnd = (HWND) hb_parni( 1 ) ;
int iRows = hb_parni( 2 ) ;
HFONT hFont = (HFONT) hb_parni( 3 ) ;
int nHeightCell = hb_parni( 4 ) ;
int nHeightHead = hb_parni( 5 ) ;
int nHeightFoot = hb_parni( 6 ) ;
int nHeightSuper = hb_parni( 7 ) ;
HFONT hOldFont ;
HDC hDC = GetDC( hWnd ) ;
RECT rct;
if( hFont )
hOldFont = SelectObject( hDC, hFont ) ;
GetClientRect( hWnd, &rct ) ;
rct.top += ( nHeightHead + nHeightSuper - ( nHeightSuper ? 1 : 0 ) ) ; // exclude heading from scrolling
rct.bottom -= nHeightFoot ; // exclude footing from scrolling
rct.bottom -= ( ( rct.bottom - rct.top + 1 ) % nHeightCell ); // exclude unused portion at bottom
ScrollWindowEx( hWnd, 0, (int) -( nHeightCell * iRows ), 0, &rct, 0, 0, 0 );
if( hFont )
SelectObject( hDC, hOldFont );
ReleaseDC( hWnd, hDC );
}
//----------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER TSBrwHScro( ) // ll( hWnd, nCols, nLeft, nRight )
#else
HARBOUR HB_FUN_TSBRWHSCROLL( )
#endif
{
HWND hWnd = (HWND) hb_parni( 1 ) ;
WORD wCols = hb_parni( 2 ) ;
int nLeft = hb_parni( 3 ) ;
int nRight = hb_parni( 4 ) ;
HDC hDC = GetDC( hWnd ) ;
RECT rct;
GetClientRect( hWnd, &rct ) ;
if ( nLeft )
rct.left = nLeft ;
if ( nRight )
rct.right = nRight ;
ScrollWindowEx( hWnd, wCols, 0, 0, &rct, 0, 0, 0 ) ;
ReleaseDC( hWnd, hDC ) ;
}
//---------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER RowFromPix( ) // ( hWnd, nRowPix, nHeightCell, nHeightHead,
// nHeightFoot, nHeightSuper ) -> nTextRow
#else
HARBOUR HB_FUN_ROWFROMPIX( )
#endif
{
HWND hWnd = ( HWND ) hb_parni( 1 ) ;
int iPixR = hb_parni( 2 ) ;
int iCell = hb_parni( 3 ) ;
int iHead = hb_parni( 4 ) ;
int iFoot = hb_parni( 5 ) ;
int iSupH = hb_parni( 6 ) ;
RECT rct ;
int iRow ;
GetClientRect( hWnd, &rct ) ;
if( iPixR <= ( rct.top + iHead + iSupH ) )
iRow = 0 ;
else
if( iPixR >= ( rct.bottom - iFoot ) )
iRow = -1 ;
else
{
rct.top += ( iHead + iSupH ) ;
iRow = ( ( iPixR - rct.top ) / iCell ) + 1 ;
}
hb_retni( iRow ) ;
}
//---------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER SBGetHeigh( ) // t( hWnd, hFont, nTotal )
#else
HARBOUR HB_FUN_SBGETHEIGHT( )
#endif
{
HWND hWnd = (HWND) hb_parni( 1 ) ;
HFONT hFont = (HFONT) hb_parni( 2 ) ;
int iTotal = hb_parni( 3 ) ;
TEXTMETRIC tm ;
RECT rct ;
HDC hDC = GetDC( hWnd ) ;
HFONT hOldFont ;
LONG lTotHeight, lReturn ;
if( iTotal < 2 )
{
if( hFont )
hOldFont = SelectObject( hDC, hFont ) ;
GetTextMetrics( hDC, &tm ) ;
if( hFont )
SelectObject( hDC, hOldFont ) ;
ReleaseDC( hWnd, hDC ) ;
lReturn = ( iTotal == 1 ? tm.tmAveCharWidth : tm.tmHeight ) ;
hb_retnl( lReturn ) ;
}
else
{
GetWindowRect( hWnd, &rct ) ;
lTotHeight = rct.bottom - rct.top + 1 ;
ReleaseDC( hWnd, hDC ) ;
hb_retnl( lTotHeight ) ;
}
}
//----------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER CountRows( ) // ( hWnd, nHeightCell, nHeightHead,
// nHeightFoot, nHeightSuper ) -> nRows
#else
HARBOUR HB_FUN_COUNTROWS( )
#endif
{
HWND hWnd = ( HWND ) hb_parni( 1 ) ;
int iCell = hb_parni( 2 ) ;
int iHead = hb_parni( 3 ) ;
int iFoot = hb_parni( 4 ) ;
int iSupH = hb_parni( 5 ) ;
RECT rct ;
int iRows, iFree ;
GetClientRect( hWnd, &rct ) ;
iFree = rct.bottom - rct.top + 1 - iSupH - iHead - iFoot ;
iRows = iFree / iCell ;
hb_retni( iRows ) ;
}
//---------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER SBmpHeight( ) // ( hBmp )
#else
HARBOUR HB_FUN_SBMPHEIGHT( ) // ( hBmp )
#endif
{
HBITMAP hBmp = (HBITMAP) hb_parni( 1 ) ;
BITMAP bm ;
GetObject( hBmp, sizeof( BITMAP ), ( LPSTR ) &bm ) ;
hb_retni( bm.bmHeight ) ;
}
//---------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER SBmpWidth( ) // ( hBmp )
#else
HARBOUR HB_FUN_SBMPWIDTH( )
#endif
{
HBITMAP hBmp = (HBITMAP) hb_parni( 1 ) ;
BITMAP bm ;
GetObject( hBmp, sizeof( BITMAP ), ( LPSTR ) &bm ) ;
hb_retni( bm.bmWidth ) ;
}
//---------------------------------------------------------------------------//
void DrawCheck( HDC hDC, LPRECT rct, HPEN hWhitePen, int nAlign, BOOL bChecked )
{
RECT lrct ;
HPEN hOldPen ;
HBRUSH hOldBrush ;
HBRUSH hGrayBrush = CreateSolidBrush( RGB( 192, 192, 192 ) ) ;
HBRUSH hWhiteBrush = CreateSolidBrush( RGB( 255, 255, 255 ) ) ;
HPEN hBlackPen = CreatePen( PS_SOLID, 1, RGB( 0, 0, 0 ) ) ;
HPEN hLGrayPen = CreatePen( PS_SOLID, 1, RGB( 192, 192, 192 ) ) ;
HPEN hGrayPen = CreatePen( PS_SOLID, 1, RGB( 128, 128, 128 ) ) ;
hOldBrush = SelectObject( hDC, hGrayBrush ) ;
lrct.top = rct->top + ( ( ( rct->bottom - rct->top + 1 ) / 2 ) - 8 );
switch( nAlign )
{
case 0:
lrct.left = rct->left ;
break ;
case 1:
lrct.left = rct->left + ( ( rct->right - rct->left + 1 ) / 2 ) - 8 ;
break ;
case 2:
lrct.left = rct->right - 16 ;
break ;
}
lrct.bottom = lrct.top + 16 ;
lrct.right = lrct.left + 16 ;
lrct.left -= 1 ;
lrct.top -= 1 ;
lrct.right += 1 ;
lrct.bottom += 1 ;
hOldPen = SelectObject( hDC, hBlackPen ) ;
Rectangle( hDC, lrct.left, lrct.top, lrct.right, lrct.bottom ) ;
lrct.left += 1 ;
lrct.top += 1 ;
lrct.right -= 1 ;
lrct.bottom -= 1 ;
FillRect( hDC, &lrct, hGrayBrush ) ;
lrct.top += 2 ;
lrct.left += 2 ;
lrct.right -= 1 ;
lrct.bottom -= 1 ;
FillRect( hDC, &lrct, hWhiteBrush ) ;
SelectObject( hDC, hOldBrush ) ;
DeleteObject( hGrayBrush ) ;
DeleteObject( hWhiteBrush ) ;
lrct.right -= 1 ;
lrct.bottom -= 1 ;
SelectObject( hDC, hGrayPen ) ;
Rectangle( hDC, lrct.left, lrct.top, lrct.right, lrct.bottom ) ;
lrct.top += 1 ;
lrct.left += 1 ;
lrct.right -= 1 ;
lrct.bottom -= 1 ;
SelectObject( hDC, hBlackPen ) ;
Rectangle( hDC, lrct.left, lrct.top, lrct.right, lrct.bottom ) ;
lrct.top += 1 ;
lrct.left += 1 ;
SelectObject( hDC, hWhitePen ) ;
Rectangle( hDC, lrct.left, lrct.top, lrct.right, lrct.bottom ) ;
lrct.top += 1 ;
lrct.right -= 2 ;
lrct.bottom -= 1 ;
if( bChecked )
{
GoToPoint( hDC, lrct.right, lrct.top ) ;
SelectObject( hDC, hBlackPen ) ;
LineTo( hDC, lrct.right - 4 , lrct.bottom - 3 ) ;
LineTo( hDC, lrct.right - 6, lrct.bottom - 5 ) ;
GoToPoint( hDC, lrct.right, lrct.top + 1) ;
LineTo( hDC, lrct.right - 4 , lrct.bottom - 2 ) ;
LineTo( hDC, lrct.right - 6, lrct.bottom - 4 ) ;
GoToPoint( hDC, lrct.right, lrct.top + 2) ;
LineTo( hDC, lrct.right - 4 , lrct.bottom - 1 ) ;
LineTo( hDC, lrct.right - 6, lrct.bottom - 3 ) ;
}
SelectObject( hDC, hOldPen ) ;
DeleteObject( hGrayPen ) ;
DeleteObject( hLGrayPen ) ;
DeleteObject( hBlackPen ) ;
}
//----------------------------------------------------------------------------//
static void GoToPoint( HDC hDC, int ix, int iy )
{
POINT pt;
#ifdef __FLAT__
MoveToEx( hDC, ix, iy, &pt ) ;
#else
MoveTo( hDC, ix, iy );
#endif
}
//--------------------------------------------------------------------------------------------------------------------//
static void DegradColor( HDC hDC, RECT * rori, COLORREF cFrom, signed long cTo )
{
float clr1r, clr1g, clr1b, clr2r, clr2g, clr2b ;
float iEle, iRed, iGreen, iBlue ;
BOOL bDir, bHoriz = cTo < 0 ;
float iTot = ( ! bHoriz ? ( rori->bottom + 2 - rori->top ) : ( rori->right + 2 - rori->left ) ) ;
RECT rct ;
HBRUSH hOldBrush, hBrush ;
rct.top = rori->top ;
rct.left = rori->left ;
rct.bottom = rori->bottom ;
rct.right = rori->right ;
clr1r = GetRValue( cFrom ) ;
clr1g = GetGValue( cFrom ) ;
clr1b = GetBValue( cFrom ) ;
cTo = ( cTo < 0 ? -cTo : cTo ) ;
clr2r = GetRValue( cTo ) ;
clr2g = GetGValue( cTo ) ;
clr2b = GetBValue( cTo ) ;
iRed = clr2r - clr1r ;
iGreen = clr2g - clr1g ;
iBlue = clr2b - clr1b ;
iRed = ( iRed / iTot ) ;
iGreen = ( iGreen / iTot ) ;
iBlue = ( iBlue / iTot ) ;
iRed = ( iRed < 0 ? -iRed : iRed ) ;
iGreen = ( iGreen < 0 ? -iGreen : iGreen ) ;
iBlue = ( iBlue < 0 ? -iBlue : iBlue ) ;
if( ! bHoriz )
rct.bottom = rct.top + 1 ;
else
rct.right = rct.left + 1 ;
hBrush = CreateSolidBrush( RGB( clr1r, clr1g, clr1b ) ) ;
hOldBrush = SelectObject( hDC, hBrush ) ;
FillRect( hDC, &rct, hBrush ) ;
for( iEle = 1; iEle < iTot; iEle++ )
{
bDir = ( clr2r >= clr1r ? TRUE : FALSE ) ;
if( bDir )
clr1r += iRed ;
else
clr1r -= iRed ;
clr1r = ( clr1r < 0 ? 0 : clr1r > 255 ? 255 : clr1r ) ;
bDir = ( clr2g >= clr1g ? TRUE : FALSE ) ;
if( bDir )
clr1g += iGreen ;
else
clr1g -= iGreen ;
clr1g = ( clr1g < 0 ? 0 : clr1g > 255 ? 255 : clr1g ) ;
bDir = ( clr2b >= clr1b ? TRUE : FALSE ) ;
if( bDir )
clr1b += iBlue ;
else
clr1b -= iBlue ;
clr1b = ( clr1b < 0 ? 0 : clr1b > 255 ? 255 : clr1b ) ;
SelectObject( hDC, hOldBrush ) ;
DeleteObject( hBrush ) ;
hBrush = CreateSolidBrush( RGB( clr1r, clr1g, clr1b ) ) ;
SelectObject( hDC, hBrush ) ;
FillRect( hDC, &rct, hBrush ) ;
if( ! bHoriz )
{
rct.top++ ;
rct.bottom++ ;
}
else
{
rct.left++ ;
rct.right++ ;
}
}
SelectObject( hDC, hOldBrush ) ;
DeleteObject( hBrush ) ;
}
//---------------------------------------------------------------------------//
#ifndef __HARBOUR__
CLIPPER CHANGESYSC( ) // OLORS( nItems, aItems, aColors )
#else
HARBOUR HB_FUN_CHANGESYSCOLORS( )
#endif
{
int iEle, iItems = hb_parni( 1 ) ;
int aiElemen[ 28 ] ;
COLORREF alColors[ 28 ] ;
for( iEle = 0 ; iEle <= ( iItems - 1 ) ; iEle++ )
{
aiElemen[ iEle ] = hb_parinfa( 2, ( iEle + 1 ) ) ;
alColors[ iEle ] = hb_parinfa( 3, ( iEle + 1 ) ) ;
}
SetSysColors( iItems, aiElemen, alColors ) ;
}
//----------------------------------------------------------------------------//
void cDrawCursor( HWND hWnd, RECT * rctc, long lCursor, COLORREF nClr )
{
HDC hDC;
HRGN hReg;
COLORREF lclr = ( lCursor == 1 ? RGB( 5, 5, 5 ) : lCursor == 2 ? nClr : lCursor );
HBRUSH hBr ;
RECT rct ;
if( lCursor != 3 )
{
hBr = CreateSolidBrush( lclr ) ;
hReg = CreateRectRgn( rctc->left, rctc->top, rctc->right - 1, rctc->bottom );
hDC = GetDCEx( hWnd, hReg, DCX_CACHE );
FrameRgn( hDC, hReg, hBr, 2, 2 );
ReleaseDC( hWnd, hDC );
DeleteObject( hReg ) ;
DeleteObject( hBr ) ;
}
else
{
rct.top = rctc->top + 1 ;
rct.left = rctc->left + 1 ;
rct.bottom = rctc->bottom - 1 ;
rct.right = rctc->right - 1 ;
hDC = GetDC( hWnd ) ;
DrawFocusRect( hDC, &rct ) ;
ReleaseDC( hWnd, hDC ) ;
}
}
vTsBrowse.LIB(TSCOLUMN.obj) : error LNK2001: símbolo externo _HB_FUN_SBGETHEIGHT sin resolver
vTsBrowse.LIB(TSBROWSE.obj) : error LNK2001: símbolo externo _HB_FUN_SBGETHEIGHT sin resolver
vTsBrowse.LIB(TSBROWSE.obj) : error LNK2001: símbolo externo _HB_FUN_ROWFROMPIX sin resolver
vTsBrowse.LIB(TSBROWSE.obj) : error LNK2001: símbolo externo _HB_FUN_COUNTROWS sin resolver
vTsBrowse.LIB(TSBROWSE.obj) : error LNK2001: símbolo externo _HB_FUN_TSBRWSCROLL sin resolver
vTsBrowse.LIB(TSBROWSE.obj) : error LNK2001: símbolo externo _HB_FUN_SBMPHEIGHT sin resolver
vTsBrowse.LIB(TSBROWSE.obj) : error LNK2001: símbolo externo _HB_FUN_TSDRAWCELL sin resolver
vTsBrowse.LIB(TSBTNGET.obj) : error LNK2001: símbolo externo _HB_FUN_GETBTN sin resolver
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 16 guests