Extended Combo Box下拉列表控件文本内容前插入图片

1、首先创建一个 CImageList 对象并初始化

CImageList *m_pImageList; 

2、加载位图资源并将其添加到图像列表中、设置组合框的图像列表。

void  CTestDlg::InitImageList()  
{
   CBitmap bmp;
    UINT bitmapIDs[] = {IDB_BITMAP1,IDB_BITMAP2};
    m_pImageList = new CImageList();
    m_pImageList->Create(16, 16, ILC_COLOR16 | ILC_MASK, 6, 6);    
    for each(UINT id in bitmapIDs) 
    {
        if (bmp.LoadBitmap(id)) 
        {
            m_pImageList->Add(&bmp, RGB(255, 255, 255));
            bmp.DeleteObject();
        } else 
        {
            LOG(INFO)<<("Failed to load bitmap with ID %d\n", id);
        }
    }
}

3、创建并初始化 COMBOBOXEXITEM 结构。

根据 _index 设置图像索引和缩进(当_index为0时,将图像索引0的图标赋予它,其它则将图像索引1的图标赋予其,并且一次呈现树状结构缩进两个字符),将项插入到组合框中并设置当前选择项。

CComboBoxEx m_ComboBoxEx;

void CTestDlg::InsertDataToComboBoxEx()
{
       LPTSTR addStr[] = {_T("内容1"),_T("内容2"),_T("内容3"),_T("内容4"),_T("内容5"),_T("内容6"),0};
          for(int i=0; i<6; i++)
          {

               int _index = i;
                COMBOBOXEXITEM cbi = { 0 };
                CString str = addStr[i];
                 int nItem;

                 cbi.mask = CBEIF_IMAGE | CBEIF_INDENT | CBEIF_OVERLAY |
                 CBEIF_SELECTEDIMAGE | CBEIF_TEXT;

                cbi.iItem = _index;   //基于零索引的扩展组合框项数
                cbi.pszText = str.GetBuffer();
                cbi.cchTextMax = str.GetLength();
                if (_index == 0)
                 {
                    cbi.iImage = 0;     //基于零的图像索引,用于表示"未选定"的状态
                    cbi.iIndent = 0;
                  }
                else
                {
                    cbi.iImage = 1;   
                    cbi.iIndent = 2 * _index;
                 }
               cbi.iSelectedImage = 1;   //基于零的图像索引,用于表示"选定"的状态
               cbi.iOverlay = 0;     //图像列表中图像的索引,用于覆盖当前的图像
               nItem = m_ComboBoxEx.InsertItem(&cbi);
        }

         m_ComboBoxEx.SetImageList(m_pImageList);
         m_ComboBoxEx.SetCurSel(0);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值