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 );
}
}