【有关CListBox】 改变CListBox的背景
我想改变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




