Bug in TBar?
Re: Bug in TBar?
Antonio,
I search into Manual and Wiki for function IsGdiObject() and it does not exist.
My PC has 8 GB of RAM, so I think it is not a question of memory (unless FWH does not manage 8 GB as it happened with nExtMem()).
Point 3 sounds very interesting. I await your instructions.
Thanks a lot.
I search into Manual and Wiki for function IsGdiObject() and it does not exist.
My PC has 8 GB of RAM, so I think it is not a question of memory (unless FWH does not manage 8 GB as it happened with nExtMem()).
Point 3 sounds very interesting. I await your instructions.
Thanks a lot.
FWH 11.11, Harbour 3.1 and Borland C++ 5.82
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: Bug in TBar?
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: Bug in TBar?
Daniel,
How are Bmps painted in Ribbon?. Does Ribbon use TBar?.
How can I track painted bmps?.
Thanks.
How are Bmps painted in Ribbon?. Does Ribbon use TBar?.
How can I track painted bmps?.
Thanks.
FWH 11.11, Harbour 3.1 and Borland C++ 5.82
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Bug in TBar?
Please add this code to your main PRG:
Code: Select all
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
static void TransBmp( HBITMAP hBitmap, int iXsize, int iYsize,
COLORREF rgbTransparent, HDC hDC,
int iXOffset, int iYOffset, int iWidth, int iHeight )
{
HDC mDC, nDC;
HBITMAP hMask, hBmOld1, hBmOld2;
LPBYTE lpBits;
mDC = CreateCompatibleDC( hDC );
if( mDC )
{
hBmOld1 = ( HBITMAP ) SelectObject( mDC, hBitmap );
lpBits = ( LPBYTE ) hb_xgrab( iXsize * iYsize * 2 );
if( lpBits )
{
hMask = CreateBitmap( iXsize, iYsize, 1, 1, lpBits );
if( hMask )
{
nDC = CreateCompatibleDC( hDC );
if( nDC )
{
hBmOld2 = ( HBITMAP ) SelectObject( nDC, hMask );
SetBkColor( mDC, rgbTransparent );
BitBlt( nDC, 0, 0, iXsize, iYsize, mDC, 0, 0, SRCCOPY );
SetStretchBltMode( hDC, COLORONCOLOR );
StretchBlt( hDC, iXOffset, iYOffset, iWidth, iHeight,
mDC, 0, 0, iXsize, iYsize,
SRCINVERT );
StretchBlt( hDC, iXOffset, iYOffset, iWidth, iHeight,
nDC, 0, 0, iXsize, iYsize,
SRCAND );
StretchBlt( hDC, iXOffset, iYOffset, iWidth, iHeight,
mDC, 0, 0, iXsize, iYsize,
SRCINVERT );
SelectObject( nDC, hBmOld2 );
DeleteDC( nDC );
}
else
MessageBox( 0, "Can't create compatible DC!", "Error", 0 );
DeleteObject( hMask );
}
else
MessageBox( 0, "Can't create bitmap!", "Error", 0 );
hb_xfree( lpBits );
}
else
MessageBox( 0, "Can't allocate memory!", "Error", 0 );
SelectObject( mDC, hBmOld1 );
DeleteDC( mDC );
}
else
MessageBox( 0, "Can't create DC!", "Error", 0 );
}
HB_FUNC( TRANSBMP )
{
TransBmp( ( HBITMAP ) hb_parnl( 1 ), hb_parnl( 2 ), hb_parnl( 3 ), hb_parnl( 4 ),
( HDC ) hb_parnl( 5 ), hb_parnl( 6 ), hb_parnl( 7 ), hb_parnl( 8 ),
hb_parnl( 9 ) );
}
#pragma ENDDUMP
Re: Bug in TBar?
Antonio,
It happened today in Ribbon but no messagebox appear!!!.
Is above TransBmp included in FW 11.11?.
Can you check it?.
Thanks.
It happened today in Ribbon but no messagebox appear!!!.
Is above TransBmp included in FW 11.11?.
Can you check it?.
Thanks.
FWH 11.11, Harbour 3.1 and Borland C++ 5.82
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: Bug in TBar?
Hello
i have not any error or bug with this class, can you provide a sample we can reproduce the problem...
thanks
i have not any error or bug with this class, can you provide a sample we can reproduce the problem...
thanks
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Bug in TBar?
Unfortunately not. It is very very random. Myself I didn't saw the problem anymore.
EMG
EMG
Re: Bug in TBar?
Enrico, thanks for listening.
Daniel, is TransBmp´s funcion pasted above included in FW 11.11?.
Thank you.
Daniel, is TransBmp´s funcion pasted above included in FW 11.11?.
Thank you.
FWH 11.11, Harbour 3.1 and Borland C++ 5.82
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Bug in TBar?
John,
yes, it is but without the MessageBox() calls
yes, it is but without the MessageBox() calls
Re: Bug in TBar?
Antonio,
I need please latest source with MessageBox in order to trace the bug.
Where should I put the code?.
Thanks.
I need please latest source with MessageBox in order to trace the bug.
Where should I put the code?.
Thanks.
FWH 11.11, Harbour 3.1 and Borland C++ 5.82
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Bug in TBar?
John,
If you include that code in one of your own PRGs, your function will be used instead of FWH one
If you include that code in one of your own PRGs, your function will be used instead of FWH one
Re: Bug in TBar?
Antonio,
Done.
I also added a number to each message to trace the error:
Form this .c code, how could I invoke Fivewin´s error system to generate an error.log file with all the debug info to trace this bug?.
Done.
I also added a number to each message to trace the error:
Code: Select all
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
static void TransBmp( HBITMAP hBitmap, int iXsize, int iYsize,
COLORREF rgbTransparent, HDC hDC,
int iXOffset, int iYOffset, int iWidth, int iHeight )
{
HDC mDC, nDC;
HBITMAP hMask, hBmOld1, hBmOld2;
LPBYTE lpBits;
mDC = CreateCompatibleDC( hDC );
if( mDC )
{
hBmOld1 = ( HBITMAP ) SelectObject( mDC, hBitmap );
lpBits = ( LPBYTE ) hb_xgrab( iXsize * iYsize * 2 );
if( lpBits )
{
hMask = CreateBitmap( iXsize, iYsize, 1, 1, lpBits );
if( hMask )
{
nDC = CreateCompatibleDC( hDC );
if( nDC )
{
hBmOld2 = ( HBITMAP ) SelectObject( nDC, hMask );
SetBkColor( mDC, rgbTransparent );
BitBlt( nDC, 0, 0, iXsize, iYsize, mDC, 0, 0, SRCCOPY );
SetStretchBltMode( hDC, COLORONCOLOR );
StretchBlt( hDC, iXOffset, iYOffset, iWidth, iHeight,
mDC, 0, 0, iXsize, iYsize,
SRCINVERT );
StretchBlt( hDC, iXOffset, iYOffset, iWidth, iHeight,
nDC, 0, 0, iXsize, iYsize,
SRCAND );
StretchBlt( hDC, iXOffset, iYOffset, iWidth, iHeight,
mDC, 0, 0, iXsize, iYsize,
SRCINVERT );
SelectObject( nDC, hBmOld2 );
DeleteDC( nDC );
}
else
MessageBox( 0, "(1) Can't create compatible DC!", "Error", 0 );
DeleteObject( hMask );
}
else
MessageBox( 0, "(2) Can't create bitmap!", "Error", 0 );
hb_xfree( lpBits );
}
else
MessageBox( 0, "(3) Can't allocate memory!", "Error", 0 );
SelectObject( mDC, hBmOld1 );
DeleteDC( mDC );
}
else
MessageBox( 0, "(4) Can't create DC!", "Error", 0 );
}
HB_FUNC( TRANSBMP )
{
TransBmp( ( HBITMAP ) hb_parnl( 1 ), hb_parnl( 2 ), hb_parnl( 3 ), hb_parnl( 4 ),
( HDC ) hb_parnl( 5 ), hb_parnl( 6 ), hb_parnl( 7 ), hb_parnl( 8 ),
hb_parnl( 9 ) );
}
#pragma ENDDUMP
FWH 11.11, Harbour 3.1 and Borland C++ 5.82
Re: Bug in TBar?
Antonio,
I was able to trace the error.
Most of the buttons of the ribbon where painted, but in one case I got:
Error (2) Can't create bitmap!. Please, see above code to see error numbers.
I was able to trace the error.
Most of the buttons of the ribbon where painted, but in one case I got:
Error (2) Can't create bitmap!. Please, see above code to see error numbers.
Code: Select all
Stack Calls
===========
Called from: => TRANSBMP( 0 )
Called from: .\source\classes\TRBTN.PRG => TRBTN:PAINT( 1428 )
Called from: .\source\classes\TRBTN.PRG => (b)TRBTN( 102 )
Called from: .\source\classes\TRBTN.PRG => TRBTN:DISPLAY( 0 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1665 )
Called from: .\source\classes\TRBTN.PRG => TRBTN:HANDLEEVENT( 1516 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3160 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 989 )
FWH 11.11, Harbour 3.1 and Borland C++ 5.82