在线急问!怎样改变combobox控件选中时候文字的背景色?

jackieji 2004-09-21 10:11:20
缺省颜色是蓝色,如果我想改变其他颜色调用哪个函数?

多谢!
...全文
226 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jackieji 2004-09-21
还实现不了,还请高人指教阿!!
回复
jackieji 2004-09-21
laiyiling(【壮志雄心】) ( )


你提供的只能改变combobox文字的底色,我想改变高亮受的颜色.谢谢
回复
Kudeet 2004-09-21
自定义一个从 CComboBox 类继承的类,处理 WM_CTLCOLOR 消息
HBRUSH CMComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = ::CreateSolidBrush (RGB(255,0,0));
return hbr;
}
回复
jackieji 2004-09-21
关键是画那部分啊?
主要是不知道重画哪一部分,用PaintDC dc(this);获得dc后重画这个dc的图,结果是那个下拉的箭头贝重画了,而不是文字高亮时候的背景颜色啊?!
回复
snollow 2004-09-21
void CColorComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// if( !lpDrawItemStruct->itemState & ODS_FOCUS )
// return;
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
CRect rect(&(lpDrawItemStruct->rcItem));
int nIndex=lpDrawItemStruct->itemID;
//
rect.left -= 0;
rect.top += 0;
rect.right -= 0;
rect.bottom += 0;

CDC dcMem;
CBitmap* pOldBitmap;
dcMem.CreateCompatibleDC( &dc );

if( lpDrawItemStruct->itemState & ODS_SELECTED )
pOldBitmap = dcMem.SelectObject( m_pBitmapFoc );
else
pOldBitmap = dcMem.SelectObject( m_pBitmapDef );

if( nIndex >= 0)
dc.BitBlt(rect.left, rect.top,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);

dc.SelectObject( m_brHollow );
dc.SetBkMode(TRANSPARENT);
dcMem.SelectObject(pOldBitmap);
dc.DrawText(m_szaryItem.GetAt(nIndex),&rect,DT_SINGLELINE|DT_LEFT|DT_VCENTER);

if(nIndex!=-1)
dc.DrawText(m_szaryItem.GetAt(nIndex),&rect,DT_SINGLELINE|DT_LEFT|DT_VCENTER);

dc.Detach();

}
回复
CloudWater 2004-09-21
没有哪个函数,只有子类化控件自己重画
回复
jackieji 2004-09-21
我当然知道在什么地方重画和继承这些冬冬,你们怎么都不明白我的意思呢?!

我要更改高亮时候的颜色!!现在windows缺省时蓝色的.

而你们所说画出来的都是背景颜色,不信你们试一下,真愁人!!!
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2004-09-21 10:11
社区公告
暂无公告