Dialog Bar Background Color
ahofmann@ndc.co.il Tuesday, April 01, 1997 Environment: MSVC++ 4.2b, Windows 95 Hi there! I hava an SDI App with a number of dialog bars which appear and disappear depending on menu choices. Basically, the control bars fill the "client area" of the app so it looks like a dialog (though the behaiour of the app is not really that of a dialog based app). All the control bars send their messages to CMainFrame (this done via the ClassWizard). My problem is that I want to change the background color of just a few of the bars. They will always have this different background (though the bars are not always visible), so I don't need any great "on the fly" flexibility. I looked in April 96 MSDN (updates haven't arrived yet!) using "Set Background Color Control Bar" and "Changing Background Color MFC". The possibilities I saw were: a) SetDialogBkColor() - this is no good as it changes all the Dialogs (for all I know it doesn't even work on Dialog bars, but doesn't seem to be what I want anyway) b) Trapping WM_ERASEBKGND - overriding OnEraseBkgnd(). But I think this would only work for a separate derived from Dialog bar for those bars, and then their messages won't go to CMainFrame..... Is there anyway to intercept the WM_ERASEBKGND message in the CMainFrame and tell which Dialog Bar is being repainted? Or even something simpler....? Thanks for any solutions/code snippets. Kibi Hofmann ahofmann@ndc.co.il
Alan Kleymeyer -- akleymeyer@netspeed.com Wednesday, April 02, 1997 Does creating child windows containing the dialogbars sound like a reasonable solution. ? Or would the "background" area you want to change be part of the child dialogbar? >---------- >From: ahofmann@ndc.co.il[SMTP:ahofmann@ndc.co.il] >Sent: Tuesday, April 01, 1997 9:53 AM >To: mfc-l@netcom.com >Subject: Dialog Bar Background Color > > Environment: MSVC++ 4.2b, Windows 95 > > Hi there! > > I hava an SDI App with a number of dialog bars which appear and > disappear depending on menu choices. Basically, the control bars fill > the "client area" of the app so it looks like a dialog (though the > behaiour of the app is not really that of a dialog based app). > > All the control bars send their messages to CMainFrame (this done via > the ClassWizard). > > My problem is that I want to change the background color of just a few > of the bars. They will always have this different background (though > the bars are not always visible), so I don't need any great "on the > fly" flexibility. > > I looked in April 96 MSDN (updates haven't arrived yet!) using "Set > Background Color Control Bar" and "Changing Background Color MFC". > > The possibilities I saw were: > > a) SetDialogBkColor() - this is no good as it changes all the Dialogs > (for all I know it doesn't even work on Dialog bars, but doesn't seem > to be what I want anyway) > > b) Trapping WM_ERASEBKGND - overriding OnEraseBkgnd(). But I think > this would only work for a separate derived from Dialog bar for those > bars, and then their messages won't go to CMainFrame..... > > Is there anyway to intercept the WM_ERASEBKGND message in the > CMainFrame and tell which Dialog Bar is being repainted? Or even > something simpler....? > > Thanks for any solutions/code snippets. > > Kibi Hofmann > ahofmann@ndc.co.il >
Claire Rollet -- crollet@sympatico.ca Wednesday, April 02, 1997 > b) Trapping WM_ERASEBKGND - overriding OnEraseBkgnd(). But I think= =20 > this would only work for a separate derived from Dialog bar for those=20 > bars, and then their messages won't go to CMainFrame..... I really don't see why "their messages won't go to CMainFrame....." ?? Is it a CDialogBarCtrl you're using?=20 If so, there souldn't be any problem (even if you derive your own class!) You just have to be sure that the parent window is the main window or a child (... of a child, of a child, ... of a child...) of it. ------------------------------------------------------ Francis Girard fgirard@machinasapiens.com ---------- > De : ahofmann@ndc.co.il > A : mfc-l@netcom.com > Objet : Dialog Bar Background Color > Date=A0: 1 avril, 1997 10:53 >=20 > Environment: MSVC++ 4.2b, Windows 95 > =20 > Hi there! > =20 > I hava an SDI App with a number of dialog bars which appear and=20 > disappear depending on menu choices. Basically, the control bars fill=20 > the "client area" of the app so it looks like a dialog (though the= =20 > behaiour of the app is not really that of a dialog based app). > =20 > All the control bars send their messages to CMainFrame (this done via=20 > the ClassWizard). > =20 > My problem is that I want to change the background color of just a few=20 > of the bars. They will always have this different background (thou= gh > the bars are not always visible), so I don't need any great "on th= e=20 > fly" flexibility. > =20 > I looked in April 96 MSDN (updates haven't arrived yet!) using "Se= t=20 > Background Color Control Bar" and "Changing Background Color MFC". > =20 > The possibilities I saw were: > =20 > a) SetDialogBkColor() - this is no good as it changes all the Dialogs=20 > (for all I know it doesn't even work on Dialog bars, but doesn't seem=20 > to be what I want anyway) > =20 > =20 > Is there anyway to intercept the WM_ERASEBKGND message in the=20 > CMainFrame and tell which Dialog Bar is being repainted? Or even=20 > something simpler....? > =20 > Thanks for any solutions/code snippets. > =20 > Kibi Hofmann > ahofmann@ndc.co.il
Become an MFC-L member | Вернуться в корень Архива |