无符号整形 发表于 2016-12-4 18:11:49

【MFC入门文字教程】27-增强的下拉列表(CComboBoxEx)

本帖最后由 无符号整形 于 2016-12-4 18:11 编辑

你有木有觉得ComboBox太单调了呢?
是不是该来点什么?是不是少了个图标?
没错,你想到的MS也想到了,于是他们就创造了ComboBoxEx(估计应该是Combo Box Extended{:10_256:} )。
它可以给组合框的每一个项添加一个图标!
心动了吧!

基础知识:
要记住ComboBox的每一项都是由一个COMBOBOXEXITEM来描述的。

好的,让我们来看看,如何给ComboBoxEx添加一个有图标的项。
下面是一个例子,它示范了如何添加一个新的项目。
注意:使用下列代码前面需要先初始化一个CImageList结构,然后在这个结构里面使用Add成员函数添加位图到里面,最后调用ComboBoxEx结构中的SetImageList,参数传CImageList的地址(看不懂的话,后面有一个实例,别担心。)
COMBOBOXEXITEM   cbi;
int                nItem;

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

cbi.iItem = i;
cbi.pszText = L"这里是新项目的标签";
cbi.cchTextMax = wcslen(L"这里是新项目的标签");
cbi.iImage = 0;
cbi.iSelectedImage = 1;
cbi.iOverlay = 2;
cbi.iIndent = (i & 0x03);   //Set indentation according
                            //to item position

nItem = m_comboEx.InsertItem(&cbi);
ASSERT(nItem == i);

COMBOBOXEXITEM结构里面的(下列成员只要Flags不设置他们有效,就可以为0)
int iImage 表示
图像列表中基于零的图像索引,用于表示"未选定"的状态
int iSelectedImage表示
在图像列表中基于零的图像索引,用于表示"选定"的状态
int iOverlay表示
图像列表中图像的索引,用于覆盖当前的图像

实践时间
貌似这个控件有个bug,图标就是显示不出来。

vc9181 发表于 2019-10-13 11:30:34

学习一下
页: [1]
查看完整版本: 【MFC入门文字教程】27-增强的下拉列表(CComboBoxEx)