Changing the Color of Toolbars
Bill E. Kempf -- WEKempf@marlton.1dc.com
Tuesday, April 02, 1996
Ok, sorry it's taken so long for me to reply to this, but we are busy with
other things, and the coloring has a low priority (though we do need to
resolve this). Your suggestion, as well as simply taking over any of the
drawing messages to paint ourselves, does not fix what we have problems
with. To clarify, your method does change the background color of the
toolbar, but not of the non-client area. When a toolbar is docked, the
actual toolbar takes up only the amount of space required for the
number/size of buttons, but the entire horizontal/vertical area of the
entire window then becomes non-client area and is colored in GREY. We want
to change this color to use our own custom background color.
Changing the background for the toolbar does not help. Changing the color
for the frame does not help. What are we left with? How do we change this
color?
----------
From: owner-mfc-l
To: mfc-l
Subject: Re: Changing the Color of Toolbars
Date: Wednesday, March 20, 1996 2:03PM
Text item:
Derive your own CToolBarCtrl or CToolBar based class and overide
PreCreatewindow(). In your PreCreateWindow(), register the class yourself
by
calling AfxRegisterWndClass() with the HBRUSH parameter set to the brush you
want to use. Another way to do it would be to overide OnPaint and then
select
the brush into the DC and blt it every time, but I think the first method is
nicer.
______________________________ Reply Separator
_________________________________
Subject: Changing the Color of Toolbars
Author: owner-mfc-l@netcom.com at SMTPGATE
Date: 3/15/96 4:00 PM
Environment: VC++ 4.0 / Win NT patch 3
Is there any way to dynamically change the color used in the background
portion of a CToolBarCtrl? We do not want to change the global colors that
these are based off of, as this will cause buttons to display improperly.
We just want to change them to use our applications background. Is there a
message that can be overriden to provide our own color? Has anyone else
found a way to do this?
Thanks for any help.
William E. Kempf
wekempf@marlton.1dc.com
--
Deepak Saxena | "We live, | These opinions
are
Deepak_Saxena@ccm.ch.intel.com | as we dream- | mine and do not
in
http://cernan.ecn.purdue.edu/~deepak | alone" | any way
represent
Home:(602)812-8933, Work:(602)554-1304 | Joseph Conrad" | Intel
Corporation.
Text item: External Message Header
The following mail header is for administrative use
and may be ignored unless there are problems.
***IF THERE ARE PROBLEMS SAVE THESE HEADERS***.
Reply-To: mfc-l@netcom.com
Precedence: list
Sender: owner-mfc-l@netcom.com
X-Mailer: Microsoft Mail V3.0
Encoding: 14 TEXT
Message-ID: <314A21CB@msmail.marlton.1dc.com>
Date: Fri, 15 Mar 96 16:00:00 PST
Subject: Changing the Color of Toolbars
To: MFC-L
From: "Bill E. Kempf"
Received: by netcom11.netcom.com (8.6.13/Netcom)
id SAA02352; Sat, 16 Mar 1996 18:26:28 -0800
Received: from netcom11.netcom.com (root@netcom11.netcom.com
[192.100.81.121]) b
y ormail.intel.com (8.7.4/8.7.3) with SMTP id AAA03568 for
; Sun, 17 Mar 1996 00:16:16 -0800 (PST)
Received: from ormail.intel.com (ormail.intel.com [134.134.192.3]) by
relay.jf.i
ntel.com (8.6.12/8.6.12) with ESMTP id AAA12159 for
; Sun, 17 Mar 1996 00:16:18 -0800
Return-Path: owner-mfc-l@netcom.com
Mike Blaszczak -- mikeblas@msn.com
Thursday, April 04, 1996
----------
From: owner-mfc-l@netcom.com on behalf of Bill E. Kempf
Sent: Tuesday, April 02, 1996 12:48 PM
> Ok, sorry it's taken so long for me to reply to this, but we are busy with
> other things, and the coloring has a low priority (though we do need to
> resolve this). Your suggestion,
The suggestions I saw were very accurate. It's the question that was
inspecific, I think.
> as well as simply taking over any of the
> drawing messages to paint ourselves, does not fix what we have problems
> with.
Why didn't your question reflect what you were having problems with?
> To clarify, your method does change the background color of the
> toolbar, but not of the non-client area. When a toolbar is docked, the
> actual toolbar takes up only the amount of space required for the
> number/size of buttons, but the entire horizontal/vertical area of the
> entire window then becomes non-client area and is colored in GREY.
PLEASE USE SPY++.
If you use Spy++, you can see exactly what's going on: that area behind the
toolbar doesn't have anything to do with the toolbar. Instead, it's actually
a separate window, entirely. If you want to change the colour of that window,
you'll need to change the way that window paints itself.
Most questions on this list dealing with windows and painting could be
answered with Spy++. Someone at Microsoft worked very hard to write this
tool. It breaks my heart that someone worked so hard to write this cool tool,
a couple of people agreed that it belonged on the Tools menu and got it there,
and then nobody uses it. Instead, they shut down Visual C++, and start up
their EMAIL program. That's more work, isn't it?
> We want
> to change this color to use our own custom background color.
Handle the WM_ERASEBKGND message for the window I've told you about. I'm not
going to tell you the class that handles all this or tell you what else to do
because you need to learn to use Spy++.
> Changing the background for the toolbar does not help. Changing the color
> for the frame does not help. What are we left with? How do we change this
> color?
Certainly, changing the background color for the toolbar _does_ help. You need
to change both the background color for your toolbar and the background color
for the docking window so they match. The frame is completely uninvolved
here--and you'd know that if you used Spy++.
Boy, I just realized: you typed that whole big note and did not even find room
for a "Thank you", huh? Since it was a follow up question, you could have
even avoided the insincere little "Thanks in advance" thing that seems to be
so popular these days.
.B ekiM
| Вернуться в корень Архива
|