试用CListCtrl::SetBkColor( COLORREF cr ); crBackground color to set, or the CLR_NONE value for no background color. List view controls with background colors redraw themselves significantly faster than those without background colors. Example// The pointer to my list view control. extern CListCtrl* pmyListCtrl;// Use the 3D button face color for the background. COLORREF crBkColor = ::GetSysColor(COLOR_3DFACE); pmyListCtrl->SetBkColor(crBkColor); ASSERT(pmyListCtrl->GetBkColor() == crBkColor); 呵呵,我想你应该看的懂~ 不懂我可以翻译~~:)
另外一个问题:改了一个Edit框的背景颜色,响应的是WM_CTLCOLOR消息 代码如下: int nID = pWnd->GetDlgCtrlID(); if(nID == IDC_EDIT_MSGNO) { pDC->SetBkMode(TRANSPARENT); //pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkColor(RGB(255,255,255)); HBRUSH b=CreateSolidBrush(RGB(255,255,255)); return b; } 而这个控件的值是时刻变化的,是100毫秒变一次,是不是要释放这个画刷啊,怎么释放啊? 到哪里释放?
crBackground color to set, or the CLR_NONE value for no background color. List view controls with background colors redraw themselves significantly faster than those without background colors.
Example// The pointer to my list view control.
extern CListCtrl* pmyListCtrl;// Use the 3D button face color for the background.
COLORREF crBkColor = ::GetSysColor(COLOR_3DFACE);
pmyListCtrl->SetBkColor(crBkColor);
ASSERT(pmyListCtrl->GetBkColor() == crBkColor);
呵呵,我想你应该看的懂~
不懂我可以翻译~~:)
代码如下:
int nID = pWnd->GetDlgCtrlID();
if(nID == IDC_EDIT_MSGNO)
{
pDC->SetBkMode(TRANSPARENT);
//pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(255,255,255));
HBRUSH b=CreateSolidBrush(RGB(255,255,255));
return b;
}
而这个控件的值是时刻变化的,是100毫秒变一次,是不是要释放这个画刷啊,怎么释放啊?
到哪里释放?
如果只是改某一行,甚至只是要改某一行的某一列的前景或者背景色,怎么办?
每次改变颜色的时候
m_brush.DelectObject();
m_brush.CreateSolidBrush(..);在OnCtlColor中
return m_brush.GetSafeHandle();
关注中。。