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

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

多谢!
...全文
347 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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缺省时蓝色的.

而你们所说画出来的都是背景颜色,不信你们试一下,真愁人!!!

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧