Antonio - Duda con UNICODE y compiladores

Antonio - Duda con UNICODE y compiladores

Postby carlos vargas » Tue Sep 27, 2011 3:24 pm

Antonio una duda, en fwbmp.c estan las funciones de manejo de bitmap y simlar, ademas entiendo que:

bcc es un compilador c con soporte UNICODE
xcc o poo NO es un compilador con soporte UNICODE (es correcto esto?)

si compilo con bcc estas dos funciones son incluidas, pero si compilo con xcc de xharbour.com palbmpread no es incluida por estar la compilacion condiconada por la definicion de la constante UNICODE, es correcto esto?

aun sigo a la caza del error en xharbour.com de que los brush y tbitmap en ciertas condiciones no muestran valor ya que por ejemplo PALBMPLOAD retorna un valor cero.

Code: Select all  Expand view


#ifndef UNICODE

HB_FUNC( PALBMPREAD ) // ( hDC, cBitmapFile ) --> aBmpPal
{
   HGLOBAL hDib = DibRead( ( char * ) hb_parc( 2 ) );

   #ifdef __XPP__
      #define hb_stornl( x, y, z ) STORNL( x, params, y, z )
   #endif

   hb_reta( 2 );
   hb_storvnl( ( LONG ) hPalBitmapNew( ( HDC ) hb_parnl( 1 ), (LPBITMAPINFO) GlobalLock( hDib ) ),
            -1, 1 );
   hb_storvnl( ( LONG ) hPalette, -1, 2 );

   GlobalUnlock( hDib );
   GlobalFree( hDib );
}

#endif

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

HB_FUNC( PALBMPLOAD ) // ( cResourceName )
{
    #ifndef UNICODE
       HRSRC  hRes = FindResource( ( HMODULE ) GetResources(),
                     IF( ISCHAR( 1 ), hb_parc( 1 ), MAKEINTRESOURCE( hb_parni( 1 ) ) ),
                     RT_BITMAP );
    #else
       LPWSTR pW = AnsiToWide( ( char * ) hb_parc( 1 ) );
       HRSRC  hRes = FindResource( ( HMODULE ) GetResources(),
                     IF( HB_ISCHAR( 1 ), pW, MAKEINTRESOURCE( hb_parni( 1 ) ) ),
                     RT_BITMAP );
    #endif
    HANDLE hResource = IF( hRes, LoadResource( GetResources(), hRes ), 0 );

    #ifdef UNICODE
       _xfree( pW );
    #endif

    if( hRes )
    {
       #ifndef __FLAT__
          hb_reta( 2 );
          hb_stornl( ( LONG ) hPalBitmapNew( 0, (LPBITMAPINFO) GlobalLock( hResource ) ), -1, 1 );
          hb_stornl( ( LONG ) hPalette, -1, 2 );
          GlobalUnlock( hResource );
       #else
          hb_reta( 2 );
          hb_storvnl( ( LONG ) hPalBitmapNew( 0, ( struct tagBITMAPINFO * ) hResource ), -1, 1 );
          hb_storvnl( ( LONG ) hPalette, -1, 2 );
       #endif
       #ifndef UNICODE
          FreeResource( hResource );
       #endif
    }
    else
    {
       hb_reta( 2 );
       hb_storvnl( 0, -1, 1 );
       hb_storvnl( 0, -1, 2 );
    }
}
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1691
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Antonio - Duda con UNICODE y compiladores

Postby Antonio Linares » Tue Sep 27, 2011 8:15 pm

Carlos,

La compilación condicional con UNICODE la usamos para FWPPC, asi que bcc tampoco la incluirá. Fijate que es un #ifndef (si no está definido).

Gracias por tu paciencia en intentar localizar esos ejemplos de uso de PalBmpLoad() :-)
regards, saludos

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 42 guests