鱼C论坛

 找回密码
 立即注册
查看: 4232|回复: 1

[技术交流] 【MFC入门文字教程】27-增强的下拉列表(CComboBoxEx)

[复制链接]
发表于 2016-12-4 18:11:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

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

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

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

  13. nItem = m_comboEx.InsertItem(&cbi);
  14. ASSERT(nItem == i);
复制代码


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

实践时间
貌似这个控件有个bug,图标就是显示不出来。
MFCApplication43.rar (1.58 MB, 下载次数: 20)

评分

参与人数 1荣誉 +7 鱼币 +7 贡献 +5 收起 理由
拈花小仙 + 7 + 7 + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-13 11:30:34 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 00:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表