FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Black Square around BTNBMPs
Posts: 990
Joined: Thu Nov 17, 2005 05:49 PM
Black Square around BTNBMPs
Posted: Wed Mar 11, 2015 07:35 PM
Hi everyone;

In an effort not to stay too far behind today I'm testing with a newer fwh and noticed a black square around my btnbmps when the mouse hovers over it. That black square surrounding the button is not there with fwh 2012_04. Maybe I'm doing something wrong or maybe this is what everybody else likes. I don't like the black square. Is there a way to get rid of it?

Code (fw): Select all Collapse
...
   DEFINE DIALOG oDlg NAME "clm_tabs"    ;
              OF ::oOwner TRANSPARENT COLOR CLR_BLUE, RGB( 240, 240, 240 ) ;
        GRADIENT { { 1, nRGB( 217, 227, 234 ), nRGB( 237, 242, 248 ) } } ;
           TITLE cTitle
...
   REDEFINE BTNBMP aoBtns[ 1 ] ID 301 OF oDlg RESOURCE "Save32" TRANSPARENT NOBORDER TOOLTIP "Save claim information to disk."


Thank you,


Reinaldo.
Posts: 990
Joined: Thu Nov 17, 2005 05:49 PM
Re: Black Square around BTNBMPs
Posted: Wed Mar 11, 2015 09:52 PM
Here is a self-contained reduced sample of the problem. All you have to do is hover over the btnbmp to see the [ugly] black square that gets drawn around the button:

Code (fw): Select all Collapse
#include "fivewin.ch"

FUNCTION START() 
   LOCAL oDlg

   DEFINE DIALOG oDlg NAME "TestDlg"
   
   REDEFINE BTNBMP RESOURCE "Find16" ID 200 OF oDlg NOBORDER ;
            ACTION MsgInfo("btnbmp" ) TRANSPARENT ;
           TOOLTIP "Test BtnBmp" 
   
   REDEFINE BUTTONBMP BITMAP "Close16"  ;
           TEXTRIGHT ;
                   ID 201     ;
                   OF oDlg    ;
               ACTION oDlg:End() ;
              TOOLTIP "Remove id image"

   ACTIVATE DIALOG oDlg 
   
RETURN NIL


Now the .rc file

Code (fw): Select all Collapse
CLOSE16 BITMAP
MOVEABLE PURE LOADONCALL DISCARDABLE
LANGUAGE LANG_NEUTRAL, 0
BEGIN
'42 4D 9E 02 00 00 00 00 00 00 36 00 00 00 28 00 '
'00 00 0E 00 00 00 0E 00 00 00 01 00 18 00 00 00 '
'00 00 68 02 00 00 12 0B 00 00 12 0B 00 00 00 00 '
'00 00 00 00 00 00 FF FF FF FF FF FF FE FE FE F6 '
'F6 F7 FD FD FD FF FF FF FF FF FF FF FF FF FF FF '
'FF FD FD FD F5 F5 F6 FE FE FE FF FF FF FF FF FF '
'00 00 FF FF FF FD FD FE CF CF D5 5A 5A A8 D0 D0 '
'D4 FD FD FE FF FF FF FF FF FF FC FC FD C1 C1 CB '
'5F 5E A9 DE DE E4 FE FE FE FF FF FF 00 00 FE FE '
'FE CD CD D4 3E 3D C1 39 35 EE 51 4F C2 D2 D2 D8 '
'FD FD FE FC FC FD C0 C0 C9 4D 4A CE 3B 38 EE 4A '
'4A B6 DE DE E4 FE FE FE 00 00 FC FC FD 5B 5B AF '
'0E 0D EB 2A 28 F4 45 41 F2 50 4F BF D1 D1 D6 BF '
'BF CA 4D 4A CD 49 45 F4 2D 2A F5 13 12 E8 77 77 '
'B7 FE FE FE 00 00 FF FF FF E2 E2 EE 3C 3C C8 13 '
'13 EF 2A 27 F4 39 36 F1 46 46 C4 42 40 D0 3C 38 '
'F3 2B 29 F4 16 15 EE 4D 4D C5 ED ED F7 FF FF FF '
'00 00 FF FF FF FF FF FF E0 E0 ED 3C 3B CA 0E 0D '
'EF 18 16 F4 1E 1C F3 20 1E F3 18 17 F3 10 0F ED '
'4F 4F CB EC EC F7 FF FF FF FF FF FF 00 00 FF FF '
'FF FF FF FF FF FF FF DA DA E7 32 32 CA 02 03 F2 '
'04 03 F3 03 03 F2 04 04 F1 46 46 BC EB EB F5 FF '
'FF FF FF FF FF FF FF FF 00 00 FF FF FF FF FF FF '
'FC FC FD B8 B8 C4 27 27 D2 01 01 F2 01 01 F3 00 '
'00 F2 02 02 F1 38 38 C3 CF CF D5 FD FD FE FF FF '
'FF FF FF FF 00 00 FF FF FF FC FC FD BD BD C6 3B '
'3B CD 1E 1E F1 21 21 F5 23 23 F3 23 23 F3 21 21 '
'F4 22 22 F0 48 48 BF D2 D2 D8 FD FD FE FF FF FF '
'00 00 FE FE FE C3 C3 CD 53 53 CF 4B 4B F4 4B 4B '
'F6 4C 4C F3 5C 5C C9 55 55 CD 4B 4B F3 4B 4B F6 '
'4C 4C F2 57 57 C0 D6 D6 DB FD FD FE 00 00 FC FC '
'FD 75 75 B9 6F 6F F2 6D 6D F8 6E 6E F4 6A 6A C3 '
'EC EC F6 E2 E2 F1 66 66 CC 6E 6E F5 6C 6C F7 6F '
'6F F1 81 81 B3 FD FD FE 00 00 FF FF FF EE EE F4 '
'77 77 CA 8E 8E F5 77 77 C9 F0 F0 F7 FF FF FF FF '
'FF FF E4 E4 EE 75 75 CF 8E 8E F4 7B 7B C2 F5 F5 '
'FA FF FF FF 00 00 FF FF FF FF FF FF F0 F0 F6 91 '
'91 C9 F3 F3 F9 FF FF FF FF FF FF FF FF FF FF FF '
'FF E7 E7 EF 92 92 C6 F7 F7 FA FF FF FF FF FF FF '
'00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF 00 00 '
END


FIND16 BITMAP
MOVEABLE PURE LOADONCALL DISCARDABLE
LANGUAGE LANG_NEUTRAL, 0
BEGIN
'42 4D 36 03 00 00 00 00 00 00 36 00 00 00 28 00 '
'00 00 10 00 00 00 10 00 00 00 01 00 18 00 00 00 '
'00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 '
'00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF 91 91 91 88 88 88 8A '
'8A 8A 8A 8A 8A 85 85 85 AD AD AD FF FF FF FF FF '
'FF C8 C8 C8 83 83 83 8A 8A 8A 8A 8A 8A 89 89 89 '
'86 86 86 FC FC FC C0 B9 B8 DA 9F 95 FF DA D7 DD '
'BA B5 A4 79 71 7B 4B 40 61 33 2B FF FF FF FF FF '
'FF 97 64 5D EE BB B2 F3 D3 CF BB 94 8E 83 56 4B '
'7F 49 3F A7 A7 A7 E9 E4 E3 B6 83 7C DE BA B6 BE '
'9D 98 8D 66 5F 6A 3E 34 5F 33 2A FF FF FF FF FF '
'FF 98 66 5F CB 9C 95 D2 B3 AF A0 7D 77 71 47 3E '
'6D 3D 34 C8 C8 C8 FF FF FF B9 8C 84 EB D4 D2 D1 '
'B8 B3 9B 78 72 72 4C 41 64 3D 34 FF FF FF FF FF '
'FF AD 81 76 DA B4 AD E3 CE CC B2 93 8C 7C 57 4D '
'6C 40 38 EC EC EB FF FF FF D6 B4 AA FF FF FF FF '
'FC F5 BE A7 9F 8A 6D 61 74 54 4A FF FF FF FF FF '
'FF D4 AC A2 FF F2 E8 FF FF FF DD CB C4 97 7C 71 '
'77 56 4C FF FF FF FF FF FF A2 88 80 FF FF FF FE '
'F3 ED B9 A1 99 86 68 5C 76 54 4B FF FF FF FF FF '
'FF D0 A7 9D FD EA E1 FF FF FF D8 C4 BC 95 79 6E '
'62 43 39 FF FF FF FF FF FF A2 8D 88 FF FF FF FF '
'FC F6 BD A6 9E 87 69 5E 84 60 55 93 93 93 C2 C2 '
'C2 DC B1 A7 FF F2 E9 FF FF FF DE CB C3 9A 7E 72 '
'4C 34 2D FF FF FF FF FF FF CB BC B9 DD D3 D3 C4 '
'AF A9 94 74 6B 79 56 4B 75 52 48 3A 2D 28 7B 6C '
'69 A7 80 76 C4 A7 9E D4 C5 C4 BB A0 99 96 73 69 '
'7A 6C 6A FF FF FF FF FF FF FF FF FF 79 69 65 E5 '
'CC C3 DF D8 D6 91 81 7A 65 4C 41 32 20 1C 6D 5A '
'56 DF BD B1 E3 DF DB 93 81 79 5A 41 36 2E 1E 19 '
'FF FF FF FF FF FF FF FF FF FF FF FF 98 80 7B FF '
'FF FD FF FF FF C6 AF A5 8D 6E 60 36 23 1E 74 63 '
'5D FF F0 E4 FF FF FF D7 C1 B9 91 72 66 45 30 2B '
'FF FF FF FF FF FF FF FF FF FF FF FF C7 B4 B0 D2 '
'BC B4 C2 B1 AE 95 75 6C 7C 58 4D 39 26 23 53 3F '
'39 CD A9 A0 CC C0 BF B1 93 8D 85 63 58 60 4C 48 '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF B2 '
'99 94 FF FF FF FF F6 F0 96 7A 6C 8E 7E 79 BF AE '
'AB FF FF FF FF FE F8 8F 73 65 81 6C 67 FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF 62 38 30 7A 68 64 3A 20 19 FF FF FF CE C0 '
'BD 77 5F 59 40 26 1D 9B 88 85 FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF D5 CA C7 83 6E 69 7D 65 5F FF FF FF F7 F6 '
'F5 93 7E 78 7B 61 5B FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF '
'FF FF FF FF FF FF '
END


TESTDLG DIALOG 6, 14, 163, 98
STYLE DS_SETFONT |DS_MODALFRAME |WS_OVERLAPPED |WS_VISIBLE |WS_SYSMENU |WS_CAPTION 
CAPTION "Test Dlg"
FONT 8, "MS Sans Serif"
LANGUAGE LANG_NEUTRAL, 0
BEGIN
  CONTROL "",1001,"BUTTON",BS_GROUPBOX |WS_CHILD |WS_VISIBLE ,3,69,154,23
  CONTROL "    Close",201,"BUTTON",BS_PUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,104,75,50,14
  CONTROL "",200,"TBtnBmp",WS_CHILD |WS_VISIBLE ,15,11,14,14
END


Perhaps now you can all see what I mean?

Reinaldo.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Black Square around BTNBMPs
Posted: Thu Mar 12, 2015 05:22 AM
Let us simplify the test program futher so that anyone can test it easily. Also let us choose a larger bitmap so that the rectangle is visible more clearly.

Code (fw): Select all Collapse
#include "fivewin.ch"

function Main()

   local oDlg, oBtn

   DEFINE DIALOG oDlg TITLE FWVERSION

   @ 10,10 BTNBMP oBtn FILE "\fwh\bitmaps\32x32\cascade.bmp" ;
      SIZE 30,30 PIXEL OF oDlg TRANSPARENT NOBORDER //2007

   @ 10,70 BUTTON "Close" SIZE 60,14 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

return nil

When the mose hovers over the btnbmp we see a rectagle around the border of the button. This change happend around 14.08 when the earlier unweildy paint method was reorganised.

Years back when the hover rectangle was introduced, it was implemented for 2007 buttons only and not for non-2007 style buttons. Now this feature works for both 2007 and non-2007 style btnbmps. Partculaly with noborder btnbmps this feature provides a visual indication of the hovered button.

I request testing this sample program. Retaining or removal of this feature would depend on general users' preference.
Regards



G. N. Rao.

Hyderabad, India
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Black Square around BTNBMPs
Posted: Thu Mar 12, 2015 10:52 AM
Reinaldo,

reinaldocrespo wrote:Here is a self-contained reduced sample of the problem. All you have to do is hover over the btnbmp to see the [ugly] black square that gets drawn around the button:


I see no black square around the button.

EMG
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Black Square around BTNBMPs
Posted: Thu Mar 12, 2015 10:53 AM

Rao,

I only see a tiny gray border around the button.

EMG

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Black Square around BTNBMPs
Posted: Thu Mar 12, 2015 11:07 AM

Yes. I think that is what he is referring to.
You will see that more clearly in my example.
This appears when move hovers, highlighting the hovered button

Regards



G. N. Rao.

Hyderabad, India
Posts: 990
Joined: Thu Nov 17, 2005 05:49 PM
Re: Black Square around BTNBMPs
Posted: Thu Mar 12, 2015 01:18 PM
I request testing this sample program. Retaining or removal of this feature would depend on general users' preference.


My friends; think about it... if it is coded as NOBORDER, then it shouldn't draw a border so it really isn't a matter of user preference. If the user prefers a border, then remove the NOBORDER clause. Don't you think?

BTW- what I see here is a black rectangle/square as you hover over the button.
Posts: 195
Joined: Sun Jul 22, 2012 07:01 PM
Re: Black Square around BTNBMPs
Posted: Sat Mar 14, 2015 05:52 AM
There may be a better place to make this change but I get what I would call expected behavior by editing the Click() method of btnbmp.prg, adding a call to ::ResetBorder() at the end as follows:

Code (fw): Select all Collapse
   ::Super:Click()         // keep it here, the latest!
   ::lProcessing = .F.
endif


Code (fw): Select all Collapse
   ::Super:Click()         // keep it here, the latest!
   ::lProcessing = .F.
   ::ResetBorder()
endif


This is with 15.02, msvc

Robb

Continue the discussion