Changing CEdit color in DialogBar
Thomas Matelich -- matelich@pacsim.com Wednesday, February 05, 1997 Environment: VC++ 4.2b, Win 95, NT 4.0 I have an edit control in a dialog bar and I want it to be read-only with a white background. I have tried handling WM_CTLCOLOR from the dialog bar and my mainframe. In both cases, CTLCOLOR_EDIT and CTLCOLOR_MSGBOX were not sent to the class, only I also tried deriving a class from CEdit, handling the message there, and subclassing the control, WM_CTLCOLOR never made it there (although I may have done it wrong). Any help would be greatly appreciated Thomas O Matelich matelich@pacsim.com
George Pavlou -- georgep@MPGN.COM Friday, February 07, 1997 You need to handle the CTLCOLOR_STATIC !! See my reply on same problem posted on 2/6/97 with subject: Re: Problem with readonly CEdit on bitmapped Dialog George |-------------------------------------------------------------------------| George Pavlou Tantalus, Inc. PC Software Specialist Key West, FL georgep@tansoft.com www.mpgn.com |-------------------------------------------------------------------------| ---------- > From: Thomas Matelich> To: mfc-l@netcom.com > Subject: Changing CEdit color in DialogBar > Date: Wednesday, February 05, 1997 2:06 PM > > Environment: VC++ 4.2b, Win 95, NT 4.0 > > I have an edit control in a dialog bar and I want it to be read-only with a > white background. I have tried handling WM_CTLCOLOR from the dialog bar and > my mainframe. In both cases, CTLCOLOR_EDIT and CTLCOLOR_MSGBOX were not > sent to the class, only > > I also tried deriving a class from CEdit, handling the message there, and > subclassing the control, WM_CTLCOLOR never made it there (although I may > have done it wrong). > > Any help would be greatly appreciated > > Thomas O Matelich > matelich@pacsim.com >
Josep -- JosepSA@Datanet.es Wednesday, January 15, 1997 Environment: VC++ 4.2b, Win 95. You must not have any problem by handling WM_CTLCOLOR from dialog bar. S= o Try it again and search for an error in the process (may be you are in a wrong class). Here you are an example that works correctly. first define a handle of your desired brush: class CYourDialogBar { // HBRUSH m_hYourDesiredBrush; // desired brush }; and initialize it: CYourDialogBar() { // =09 m_hYourDesiredBrush=3D(HBRUSH) GetStockObject(WHITE_BRUSH); } then handle WM_CTLCOLOR from CYourDialogBar: HBRUSH CYourDialogBar::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)=20 { HBRUSH hbr; if(nCtlColor !=3D CTLCOLOR_EDIT) // Edit control ????? hbr=3Dm_hYourDesiredBrush; // Yes !!!!!!!! else // all other=20 hbr =3D CDialogBar::OnCtlColor(pDC, pWnd, nCtlColor);=20 =09 return hbr; } If you need a complete example ask me for it. =20 Josep S=E0nchez Alba JosepSA@datanet.es ---------- > From: Thomas Matelich> To: mfc-l@netcom.com > Subject: Changing CEdit color in DialogBar > Date: mi=E9rcoles 5 de febrero de 1997 20:06 >=20 > Environment: VC++ 4.2b, Win 95, NT 4.0 >=20 > I have an edit control in a dialog bar and I want it to be read-only wi= th a > white background. I have tried handling WM_CTLCOLOR from the dialog ba= r and > my mainframe. In both cases, CTLCOLOR_EDIT and CTLCOLOR_MSGBOX were no= t > sent to the class, only >=20 > I also tried deriving a class from CEdit, handling the message there, a= nd > subclassing the control, WM_CTLCOLOR never made it there (although I ma= y > have done it wrong). >=20 > Any help would be greatly appreciated >=20 > Thomas O Matelich > matelich@pacsim.com
Ho Pham -- hop@allensysgroup.com Monday, February 10, 1997 I have CEdit controls on a CView and the best way to change the color is to trap the =WM_CTLCOLOR (reflected message) event and change the color there. You also need to a solid brush (::CreateSolidBrush() in the ctor) for your CEdit then use it to pass back when CtlColor is called. Notice the function is CtlColor() not OnCtlColor(). Here how I do it: HBRUSH CEditText::CtlColor(CDC* pDC, UINT nCtlColor) { // TODO: Change any attributes of the DC here // TODO: Return a non-NULL brush if the parent's handler should not be called //pDC->SetBkColor (RGB (0x00, 0x00, 0xFF)); pDC->SetTextColor (RGB(0xFF, 0x00, 0x00)); return m_pBrush; } ---------------------------------------------------- Ho Pham hop@allensysgroup.com ----------------------------------------------------------- George Pavlou wrote: > > You need to handle the CTLCOLOR_STATIC !! > > See my reply on same problem posted on 2/6/97 with subject: > Re: Problem with readonly CEdit on bitmapped Dialog > > George > > |-------------------------------------------------------------------------| > > George Pavlou Tantalus, Inc. > PC Software Specialist Key West, FL > georgep@tansoft.com www.mpgn.com > |-------------------------------------------------------------------------| > > ---------- > > From: Thomas Matelich> > To: mfc-l@netcom.com > > Subject: Changing CEdit color in DialogBar > > Date: Wednesday, February 05, 1997 2:06 PM > > > > Environment: VC++ 4.2b, Win 95, NT 4.0 > > > > I have an edit control in a dialog bar and I want it to be read-only with > a > > white background. I have tried handling WM_CTLCOLOR from the dialog bar > and > > my mainframe. In both cases, CTLCOLOR_EDIT and CTLCOLOR_MSGBOX were not > > sent to the class, only > > > > I also tried deriving a class from CEdit, handling the message there, and > > subclassing the control, WM_CTLCOLOR never made it there (although I may > > have done it wrong). > > > > Any help would be greatly appreciated > > > > Thomas O Matelich > > matelich@pacsim.com > >
Become an MFC-L member | Вернуться в корень Архива |