CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

【有关CListBox】 改变CListBox的背景

楼主nnkidding(剑者)2002-02-08 17:35:25 在 VC/MFC / 基础类 提问

我想改变CListBox的背景色,并重载了CListBox的OnEraseBkgnd,可是:  
   
  【当内容为空的时候),背景还是白色的】,怎么办?  
   
  我看过  
  http://codeguru.earthweb.com/index.shtm  
  下的一个控件(类),它的也存在同样的问题  
   
  谁能帮忙解决? 问题点数:20、回复次数:6Top

1 楼nnkidding(剑者)回复于 2002-02-08 17:40:20 得分 0

一定要注意:我希望背景是黑色的,任何时候都是黑色的,无条件!  
  问题在于:是内容为空的时候,背景又自动有变为了讨厌的白色!!!  
  明白?Top

2 楼lailaimao(lailaimao)回复于 2002-02-08 17:46:22 得分 3

CListCtrl m_ConnectionList;  
  m_ConnectionList.SetBkColor(RGB(255,226,185));  
  这样行的,我就是这样的,不用其他的Top

3 楼CoolBoy_007(coolboy_007)回复于 2002-02-08 17:49:03 得分 3

你需要在定制CListBox时将其设置成自绘制型系统就会在开始显示时发送  
  MEASUREITEM消息用来衡量显示区域宽度,然后在绘制时发送DRAWITEM消息进行指定项的绘制,我想通过我上面提到的方法应该可以完全解决你的问题了!Top

4 楼nnkidding(剑者)回复于 2002-02-19 09:10:40 得分 0

lailaimao(lailaimao)   :我用的是CListBox,你说得是CListCtrl  
   
  CoolBoy_007(酷男):能否详细些?我还是不懂,在  
  void   CColorListBox::MeasureItem(LPMEASUREITEMSTRUCT   lpMIS)  
  的参数定义中,lpMIS的定义为  
  typedef   struct   tagMEASUREITEMSTRUCT   {  
          UINT               CtlType;  
          UINT               CtlID;  
          UINT               itemID;  
          UINT               itemWidth;  
          UINT               itemHeight;  
          DWORD             itemData;  
  }   MEASUREITEMSTRUCT,   NEAR   *PMEASUREITEMSTRUCT,   FAR   *LPMEASUREITEMSTRUCT;  
   
  他们的用途各是什么?  
   
  Top

5 楼strip(阿飞 - Mozilla●CSDN●痛)回复于 2002-02-19 10:17:45 得分 4

workaround:  
   
  在父窗口的某个消息处理里面,或者CListBox的某个函数里面判断,如果时0个item在listbox里面,就添加一个空的item进去,比如空格  
   
  虽然很奇怪,但是的确能解决这个问题Top

6 楼acptvc(微软全球技术中心 VC技术支持)回复于 2002-02-19 13:51:21 得分 10

感谢您使用微软产品。  
     
  您可以尝试使用以下两种方法来改变CListBox的背景。  
     
  1. 利用DrawItem函数,该函数的具体使用请参阅MSDN   Library:  
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_clistbox.3a3a.drawitem.asp  
   
  2. 重载包含该CListBox的父窗口的OnCtlColor函数,具体请参阅MSDN   Library:  
  http://support.microsoft.com/default.aspx?scid=kb;EN-US;q117778  
   
  该处给出了一个改变Edit控件的背景颜色的示例,您只需要稍作修改即可。具体的修改如下:  
  在该示例的OnCtlColor函数中,把“case   CTLCOLOR_EDIT:”一句改为“case   CTLCOLOR_LISTBOX:”即可。  
   
   
  -   微软全球技术中心   VC技术支持  
     
  本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款  
  (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。  
  为了为您创建更好的讨论环境,请参加我们的用户满意度调查  
  (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。  
   
   
  Top

相关问题

  • 请问怎么改变CListBox的背景色?
  • 有关onmouseover改变行背景色的问题
  • 【CListBox】——如何在程序窗口开始时就使CListBox的背景颜色改变
  • 请教一个有关于动态改变表格背景的问题
  • 改变Dialog 背景Brush
  • 改变背景颜色?
  • ???改变CView的背景
  • 改变背景图案?
  • 如何改变背景色
  • 改变MDI的背景色

关键词

  • 函数
  • 解决
  • msdn
  • 消息
  • microsoft
  • asp
  • clistbox
  • 背景
  • 改变
  • 绘制

得分解答快速导航

  • 帖主:nnkidding
  • lailaimao
  • CoolBoy_007
  • strip
  • acptvc

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo