Errores de compilación con MSVC

Errores de compilación con MSVC

Postby hgarcia » Thu Feb 25, 2010 6:56 pm

Estoy tratando de migrar de xHarbour+BC5.5 a Harbour +MSVC. Ya tengo instalada la versión correspondiente de fivewin 10.1 ya tengo instalado visual express 2008, ya logré compilar algunos fuentes fivewin pero tengo unos módulos C que al compilar me envía mensajes de compliación y mi conocimiento en C es totalmente nulo. Por más intentos que hago leyendo el help no lgor encontrar la solución a estos errores, anexo copia de los errores y la parte del código que me da problemas
Code: Select all  Expand view

#include "hbrdddbf.h"
#include "hbapirdd.h"

//----------------------------------------------------------------------------//

HB_FUNC( DBFHDL )
{
    LPDBFAREA pArea = hb_rddGetCurrentWorkAreaPointer();
   if( pArea )
//      hb_retni( pArea->hDataFile );
      hb_retptr( pArea->pDataFile ); // si xharbour 1.2.1
   else
//      hb_retni( 0 );
      hb_retptr( 0 );  // si xharbour1.2.1
}

 

el error de compilación es el siguiente:
Code: Select all  Expand view

    C:\Visual9.0\VC\bin\CL.EXE /DHB_FM_STATISTICS_OFF /DHB_API_MACROS /DHB_STACK_MACROS /nologo /TP /w /GA  /Ox  /D__HARBOUR__ /c /IC:\Visual9.0\VC\include /IC:\hb20\include;d:\frameworkh\include;C:\FWH10.1\include /Fo"D:\frameworkh\objhb\HBFORCE.obj" "D:\frameworkh\chb\HBFORCE.C"
HBFORCE.C
D:\frameworkh\chb\HBFORCE.C(20) : error C2440: 'inicializando' : no se puede realizar la conversi¢n de 'void *' a 'LPDBFAREA'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\HBFORCE.C(33) : error C2440: 'inicializando' : no se puede realizar la conversi¢n de 'void *' a 'LPDBFAREA'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\HBFORCE.C(44) : error C2440: 'inicializando' : no se puede realizar la conversi¢n de 'void *' a 'LPDBFAREA'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\HBFORCE.C(115) : error C2440: 'inicializando' : no se puede realizar la conversi¢n de 'void *' a 'ADSAREAP'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\HBFORCE.C(126) : error C2440: 'inicializando' : no se puede realizar la conversi¢n de 'void *' a 'ADSAREAP'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\HBFORCE.C(137) : error C2440: 'inicializando' : no se puede realizar la conversi¢n de 'void *' a 'ADSAREAP'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita

Toda ayuda será bienvenida
Saludos
Héctor García
México, D.F.
hgarcia
 
Posts: 33
Joined: Thu Aug 10, 2006 12:23 pm
Location: México D.F

Re: Errores de compilación con MSVC

Postby Antonio Linares » Fri Feb 26, 2010 1:56 am

Héctor,

Prueba a cambiar esta línea así:

LPDBFAREA pArea = ( LPDBFAREA ) hb_rddGetCurrentWorkAreaPointer();
regards, saludos

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

Re: Errores de compilación con MSVC

Postby hgarcia » Fri Feb 26, 2010 3:29 am

eso funciono perfecto Antonio Gracias pero ahora tengo otro problema con otro módulo

Code: Select all  Expand view

/***************************************************************

This file contains the special painting routines used by TSBrowse Class
Last update: February 26th, 2008

***************************************************************/


#ifdef __HARBOUR__
#include <hbApi.h>   /* set your own path if needed */
#endif

#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>

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, COLORREF ) ;

//---------------------------------------------------------------------------//

#ifndef __HARBOUR__
CLIPPER TSDrawCell( PARAMS ) // ( 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( PARAMS )
#endif
{
   HWND hWnd        = (HWND) _parni( 1 ) ;
   HDC  hDC         = (HDC) _parni( 2 ) ;
   int  nRow        = _parni( 3 ) ;
   int  nColumn     = _parni( 4 ) ;
   int  nWidth      = _parni( 5 ) ;
   LPSTR cData      = (LPSTR) _parc( 6 )  ;
   int  nLen        = _parclen( 6 ) ;
   DWORD nAlign     = _parnl( 7 ) ;
   COLORREF clrFore = _parnl( 8 ) ;
   COLORREF clrBack = _parnl( 9 ) ;
   HFONT hFont      = (HFONT) _parni( 10 ) ;
   HBITMAP hBitMap  = (HBITMAP) _parni( 11 ) ;
   int nHeightCell  = _parni( 12 ) ;
   BOOL b3DLook     = _parl( 13 ) ;
   int nLineStyle   = _parni( 14 ) ;
   COLORREF clrLine = _parnl( 15 ) ;
   int nHeadFoot    = _parni( 16 ) ;
   int nHeightHead  = _parni( 17 ) ;
   int nHeightFoot  = _parni( 18 ) ;
   int nHeightSuper = _parni( 19 ) ;
   BOOL bAdjBmp     = _parl( 20 ) ;
   BOOL bMultiLine  = _parl( 21 ) ;
   int nVAlign      = _parni( 22 ) ;
   int nVertText    = _parni( 23 ) ;
   COLORREF clrTo   = _parnl( 24 ) ;
   BOOL bOpaque     = _parl( 25 ) ;
   HBRUSH wBrush    = (HBRUSH) _parnl( 26 ) ;
   BOOL b3DInv      = ( ISLOGICAL( 27 ) ? ! _parl( 27 ) : FALSE ) ;
   BOOL b3D         = ( ISLOGICAL( 27 ) ? TRUE : FALSE ) ;
   COLORREF nClr3DL = _parnl( 28 ) ;
   COLORREF nClr3DS = _parnl( 29 ) ;
   long lCursor     = _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     = ( clrTo == clrBack ? FALSE : TRUE ) ;
   HFONT hOldFont ;
   BOOL bDestroyDC  = FALSE ;
   HPEN hGrayPen    = (HPEN) CreatePen( PS_SOLID, 1, clrLine );
   HPEN hWhitePen   = (HPEN) 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 ) ;

 


y el error consecuente es
Code: Select all  Expand view

D:\frameworkh\chb\TSBFUNCS.C(107) : error C2440: '=' : no se puede realizar la conversi¢n de 'HGDIOBJ' a 'HFONT'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\TSBFUNCS.C(394) : error C2440: '=' : no se puede realizar la conversi¢n de 'HGDIOBJ' a 'HFONT'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\TSBFUNCS.C(496) : error C2440: '=' : no se puede realizar la conversi¢n de 'HGDIOBJ' a 'HFONT'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\TSBFUNCS.C(585) : error C2440: '=' : no se puede realizar la conversi¢n de 'HGDIOBJ' a 'HBRUSH'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\TSBFUNCS.C(610) : error C2440: '=' : no se puede realizar la conversi¢n de 'HGDIOBJ' a 'HPEN'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
D:\frameworkh\chb\TSBFUNCS.C(727) : error C2440: '=' : no se puede realizar la conversi¢n de 'HGDIOBJ' a 'HBRUSH'
        La conversi¢n de 'void*' a puntero a elemento que no sea 'void' requiere una conversi¢n expl¡cita
 
Héctor García
México, D.F.
hgarcia
 
Posts: 33
Joined: Thu Aug 10, 2006 12:23 pm
Location: México D.F

Re: Errores de compilación con MSVC

Postby Antonio Linares » Fri Feb 26, 2010 8:57 am

Héctor,

En todas las líneas en las que uses SelectObject() tendras que hacerles el "casting" al mismo tipo de la variable que recibe el valor devuelto:

hOldFont = ( HFONT ) SelectObject( hDC, hFont ) ;

ya que SelectObject() devuelve un HGDIOBJ y lo vas a guardar en un HFONT.
regards, saludos

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

Re: Errores de compilación con MSVC

Postby hgarcia » Fri Feb 26, 2010 12:54 pm

Gracias ya pude compilar completamente
Saludos
Héctor García
México, D.F.
hgarcia
 
Posts: 33
Joined: Thu Aug 10, 2006 12:23 pm
Location: México D.F


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 39 guests