回复人: strip(阿飞) ( ) 信誉:97 2002-3-20 14:44:15 得分:3
重载CEditEx::CtlColor, 就是classwizard里面的“=WM_CTLCOLOR” (而不是WM_CTLCOLOR)给CEditEx增加三个成员变量:
CBrush m_brBkGround;
COLORREF m_crBkColor;
COLORREF m_crTextColor;在构造函数里面:
CEditEx::CEditEx()
{
m_crTextColor = ::GetSysColor( COLOR_WINDOWTEXT );
m_crBkColor = RGB(255,0,0);
m_brBkGround.CreateSolidBrush( RGB(255,0,0) );
}
在消息处理里面:HBRUSH CEditEx::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetTextColor( m_crTextColor );
pDC->SetBkColor( m_crBkColor );
return (HBRUSH)m_brBkGround;
}
Top
回复人: strip(阿飞) ( ) 信誉:97 2002-3-20 14:44:36 得分:2
或者:在父窗口中加一个CBrush成员,在父窗口的OnCtlColor中设定cbrush,返回.if(pWnd->m_hWnd==MyEdit.m_hWnd)
{//设顶brush
return (HBRUSH)MyBrush;
}
Top
回复人: shenxiaohu() ( ) 信誉:100 2002-3-20 15:03:33 得分:0
我使用classwizard没有找到OnCtlColor这个事件,还有我的这个Edit是动态生成的,该如何处理?
Top
回复人: strip(阿飞) ( ) 信誉:97 2002-3-20 15:42:16 得分:3
第一种方法是重载CEdit生成CEditEx,然后用CEditEx动态生成第二种是在父窗口的WM_CTLCOLOR消息处理里面判断pWnd->m_hWnd==你动态生成的Edit的HWND
Top
回复人: zzWind() ( ) 信誉:100 2002-4-18 15:23:47 得分:12
增加OnCtlColor 事件然后判断是否为CTLCOLOR_EDIT 即可
搜的,呵呵!
重载CEditEx::CtlColor, 就是classwizard里面的“=WM_CTLCOLOR” (而不是WM_CTLCOLOR)给CEditEx增加三个成员变量:
CBrush m_brBkGround;
COLORREF m_crBkColor;
COLORREF m_crTextColor;在构造函数里面:
CEditEx::CEditEx()
{
m_crTextColor = ::GetSysColor( COLOR_WINDOWTEXT );
m_crBkColor = RGB(255,0,0);
m_brBkGround.CreateSolidBrush( RGB(255,0,0) );
}
在消息处理里面:HBRUSH CEditEx::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetTextColor( m_crTextColor );
pDC->SetBkColor( m_crBkColor );
return (HBRUSH)m_brBkGround;
}
Top
回复人: strip(阿飞) ( ) 信誉:97 2002-3-20 14:44:36 得分:2
或者:在父窗口中加一个CBrush成员,在父窗口的OnCtlColor中设定cbrush,返回.if(pWnd->m_hWnd==MyEdit.m_hWnd)
{//设顶brush
return (HBRUSH)MyBrush;
}
Top
回复人: shenxiaohu() ( ) 信誉:100 2002-3-20 15:03:33 得分:0
我使用classwizard没有找到OnCtlColor这个事件,还有我的这个Edit是动态生成的,该如何处理?
Top
回复人: strip(阿飞) ( ) 信誉:97 2002-3-20 15:42:16 得分:3
第一种方法是重载CEdit生成CEditEx,然后用CEditEx动态生成第二种是在父窗口的WM_CTLCOLOR消息处理里面判断pWnd->m_hWnd==你动态生成的Edit的HWND
Top
回复人: zzWind() ( ) 信誉:100 2002-4-18 15:23:47 得分:12
增加OnCtlColor 事件然后判断是否为CTLCOLOR_EDIT 即可
搜的,呵呵!
afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );
代码在这里,哪里有问题呢?
HBRUSH CEvilDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd->m_hWnd==m_HwndEdit)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));
return (HBRUSH)m_hbrush;
} // TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
return hbr;
}
error C2352: 'CEditEx::SetForeColor' : illegal call of non-static member function
: see declaration of 'SetForeColor'
CEditEx::SetForeColor(m_clrFore);
//m_brush是背景色HBRUSH CEditDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(pWnd->GetDlgCtrlID() == IDC_EDIT_TEST)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
hbr = m_brush;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}