用VC实现自定义LISTBOX控件

这篇博客记录了如何在VC环境下实现自定义LISTBOX控件,使其能显示放大后的项目。首先,将LISTBOX属性设置为'FIXED',然后创建一个继承自CListBox的类CCustomListBox,重载PreSubclassWindow、DrawItem和MeasureItem函数。在PreSubclassWindow中设置子项目高度,DrawItem用于绘制选择的项目并改变颜色,MeasureItem则用于修改项目属性。通过这种方式,即使LISTBOX设置了自绘属性,也能正常显示添加的子项。
摘要由CSDN通过智能技术生成

下午在用EVC在ARM开发板上开发应用程序,需要将LISTBOX控件上的项目放大显示,我先用VC模拟出来,但是很不幸,EVC上LISTBOX不支持OWNER DRAW。不过还好,总算在VC上做了点东西,下面把过程记录下来:

1、在对话框中添加一个LISTBOX控件,将其属性改为“FIXED”(属性说明请参阅MSDN)。
2、建立一个断承CListBox的类CCustomListBox,重载(Override)它的几个函数。
3、在CCustomListBox在PreSubclassWindow函数中添加如下代码:
      CRect rect;
      GetClientRect(rect);
      this->SetItemHeight(-1,rect.Height()/4); //将LISTBOX的子项目高度设置为LISTBOX高度的1/4
4、如果LISTBOX控件选择了“FIXED”属性后不做任何修改,那么用AddString等函数添加的子项将不会被系统自动显示,原因是用户选择了自绘属性。这个属性由CCustomListBox里的DrawItem和MesureItem函数完成。DrawItem用来绘制子项目,MesureItem用来修改项目的一些属性(一般不用更改)。在DrawItem里添加如下代码:
 COLORREF clrItemText;

 switch ( lpDIS->itemAction )   //lpDIS为一个LPMEASUREITEMSTRUCT(记录控件信息)

 {
      case ODA_SELECT:
      case ODA_DRAWENTIRE:
     
         // Is the item selected?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值