Re: CEditView OnCtrlColor Not Received
The WM_CTRLCOLOR is usually handled by the parent of a control to change the
color of a control. So in order to catch the WM_CTRLCOLOR message of the
control itself you will have to use message reflection.
Messages that can be used with reflection are preceded by an = in the
property window.
Anyway hope this clears it up for you.
AliR.
"Jeffrey Walton" <noloader@gmail.com> wrote in message
news:33c52cc1-4342-4aad-b464-86ec0003481f@c34g2000yqi.googlegroups.com...
Hi Ali,
That was it. I missed it on forst pass - its kind of odd how the
wizard uses '=WM_CTRLCOLOR' message rather than 'WM_CTRLCOLOR' the
message.
Jeff
On Aug 19, 10:20 am, "AliR" <A...@online.nospam> wrote:
Try ON_WM_CTLCOLOR_REFELECT()
and
afx_msg HBRUSH CtlColor(CDC *pDC, UINT nCtlColor);
AliR.
"Jeffrey Walton" <noloa...@gmail.com> wrote in message
news:86d4b30e-4861-4cd5-b097-30cea7ccd74a@24g2000yqm.googlegroups.com...
Hi All,
I have an SDI project with five views. One view is derived from
CEditView. I'm trying to change the background color on the derived
view, but WM_CTRLCOLOR is not being received by the view.
Any ideas? Thanks,
Jeff
class CMyView : public CEditView
{
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
...
}
BEGIN_MESSAGE_MAP(CMyView, CEditView)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CEditView::PreCreateWindow(cs) )
return FALSE;
cs.style |= ES_READONLY | ES_MULTILINE | ES_AUTOVSCROLL;
return TRUE;
}
HBRUSH CMyView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// Calling Base class makes no difference
// HBRUSH hbr = CEditView::OnCtlColor(pDC, pWnd, nCtlColor);
pDC->SetBkColor( RGB(255,255,255) );
pDC->SetTextColor( RGB(0,0,0) );
return (HBRUSH)m_brushWhite.GetSafeHandle();
}- Hide quoted text -
- Show quoted text -