15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Disabled Text Color

Mark Koehler -- mkoehler@ix.netcom.com
Saturday, July 13, 1996

VC++ 4.1 Win95/WinNT 4.0

We've run across a problem in the application we are try to create. After
much fuss, it was decided the we don't want to have a disabled edit control
look the way it does when it is disabled. Under Win95 it is often very
difficult to READ disabled text against the disabled background. We'd like
our users to be able to read the contents of a control with enabling the
control.

Is there a straight forward way to change the disabled text color for a
series of controls within an application without affecting all applications
as SetSystemColor would do?
--
Mark Koehler
Atlanta, GA



MORIN Jean-Marc -- jmc21@planetb.fr
Wednesday, July 17, 1996

[Mini-digest: 3 responses]

Mark Koehler wrote:
> 
> VC++ 4.1 Win95/WinNT 4.0
> 
> We've run across a problem in the application we are try to create. After
> much fuss, it was decided the we don't want to have a disabled edit control
> look the way it does when it is disabled. Under Win95 it is often very
> difficult to READ disabled text against the disabled background. We'd like
> our users to be able to read the contents of a control with enabling the
> control.
> 
> Is there a straight forward way to change the disabled text color for a
> series of controls within an application without affecting all applications
> as SetSystemColor would do?
> --
> Mark Koehler
> Atlanta, GA

Just implement function OnCtlColor into the parent Dialog or Window
and change the Brush....

This code look like this:
HBRUSH CSizeDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    HBRUSH hbr = CPropPage::OnCtlColor(pDC, pWnd, nCtlColor);
	
    if (pWnd->GetSafeHwnd() == ((CWnd*)GetDlgItem(IDC_EDIT2))->GetSafeHwnd())
       {
          if (!pWnd->IsWindowEnabled())
             {
               pDC->SetBkMode(OPAQUE);
               pDC->SetBkColor(::GetSysColor(COLOR_BTNFACE));
               pDC->SetTextColor(::GetSysColor(COLOR_BTNSHADOW));
             }
       }

	// TODO: Return a different brush if the default is not desired
	return hbr;
}

This code do exactly the reverse of your need. I implement gray background
into my edit control (IDC_EDIT2) for any kind of plateform.

Just change color that you need in GetSysColor.


                     Enjoy reception
                        mjm
-----From: "Mike Blaszczak" 

It seems like this kind of thing is exactly what WM_CTLCOLOR should be used 
for.  Use ClassWizard to write an OnCtlColor() handler for your dialog. Have 
it change the colours as you like for the edit control in question.  You need 
to do this for each dialog you want to alter.

.B ekiM
-----From: "Ignacio Nicolбs Rodrнguez" 

Hi!

If I guess right, what you are willing to have is a readonly edit control,
not a disabled one.
You can set the readonly style from the dialog-designer, or you can
SetWindowLong(GWL_STYLE, ES_READONLY).

By the way, welcome list-writers to Buenos Aires.

Ignacio Nicolбs Rodrнguez.
inz@cano.com.ar



Roger Onslow -- Roger_Onslow@compsys.com.au
Monday, July 22, 1996

>We've run across a problem in the application we are try to create. After
>much fuss, it was decided the we don't want to have a disabled edit control
>look the way it does when it is disabled. Under Win95 it is often very
>difficult to READ disabled text against the disabled background. We'd like
>our users to be able to read the contents of a control with enabling the
>control.

Have you tried making it read-only (rather than disable)?
           /|\        Roger Onslow
      ____|_|.\       ============
    _/.........\Senior Software Engineer
   /CCC.SSS..A..\
  /CC..SS...A.A..\   Computer
 /.CC...SS..AAA...\       Systems
/\.CC....SSAA.AA../            Australia
\ \.CCCSSS.AA.AA_/
 \ \...........//      Ph: +61 49 577155
  \ \...._____//      Fax: +61 49 675554
   \ \__|_/\_//    RogerO@compsys.com.au
    \/_/  \//






| Вернуться в корень Архива |