如何向CImageList中加入位图文件

原创 2001年06月19日 16:24:00
 

MFCCImageList类封装了图象列表控件的功能,图象列表控件是相同大小图象的一个集合,用于应用程序中大规模图标的存储,该控件是不可见控件,通常与其它控件一起使用,来为其它控件提供图标资源。图象的每个集合中均以0为图象索引基数,可以把这些图标看成是以数组方式存储的,图像列表通常由大图标或位图构成,其中包含位图模式,实际上,所有的在同一个图象列表中的图标都被存储在一个屏幕设备的位图中。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

通常向CImageList对象中添加图像元素的方法是:首先把图标或位图调入资源文件中,然后调用CImageListAdd方法加入到图象列表控件中,将位图装入资源导致可执行文件增大,不利于软件发行,而且只能使用资源中有限的位图,无法选取其它位图。要弥补使用资源位图的不足,就必须直接使用BMP位图文件。

使用下列代码即可实现:

HBITMAP hBitmap;

CBitmap *pBitmap;

CImageList *pImageList;

pImageList=new CImageList;

pImageList->Create (32,32,ILC_COLOR4,5,2);

pBitmap=new  CBitmap;

hBitmap=(HBITMAP)LoadImage(NULL,FilePathName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//FilePathName 是位图文件完整路径字符串

pBitmap->Attach (hBitmap);

pImageList->Add (pBitmap,RGB(0,0,0));

下面结合一个实例详细说明的用法:

例程解析:

例程基于一个对话框,单击对话框中的‘添加bmp’按钮弹出文件选择框,选择一个bmp文件,即可把选种bmp文件加入到列表控件中。在MFC中,CLIstCtrl类封装了列表控件,主要用来以各种方式显示一组数据记录供用户进行各种操作,列表中的记录可以包括多个数据项,也可以包括表示数据内容的大小图标,用来表示数据记录的各种属性,Windows资源管理器的右侧框架就是一个非常典型的列表控件。

      新建MFC AppWiazrd[exe]工程,工程名称ImageListAddBmp,OK,选中Dialog based 点下一步,剩下的几步用缺省值,一直按下一步直到完成,工程建立完毕。按以下步骤设置几个变量,填写事件代码:

1. IDD_IMAGELISTADDBMP_DIALOG对话框中加入ClistCtrl控件和一个按纽,按纽Caption为“添加bmp”

2. 使用类向导添加CtrlList控件变量m_ListCtrl

3. CimageListAddBmpDlg类中添加下面两个公用变量:
int index;
CImageList *pImageList;

4. BOOL CImageListAddBmpDlg::OnInitDialog()初始化函数中,
// TODO: Add extra initialization here
语句后面添加以下代码
  index=0;
  pImageList=new CImageList;
  pImageList->Create (32,32,ILC_COLOR4,5,2);
  m_ListCtrl.SetImageList (pImageList,LVSIL_NORMAL );

5. IDD_IMAGELISTADDBMP_DIALOG对话框中双击‘添加bmp’按钮,加入Onbutton1单击事件代码:
void CImageListAddBmpDlg::OnButton1()
{
// TODO: Add your control notification handler code here
  CString  FilePathName,FileName;
 CFileDialog dlg(TRUE);///TRUE
OPEN对话框,FALSESAVE AS对话框
 if(dlg.DoModal()==IDOK)
  {
    FilePathName=dlg.GetPathName();
    HBITMAP hBitmap;
    CBitmap *pBitmap;
    pBitmap=new CBitmap;
  hBitmap=(HBITMAP)LoadImage(NULL,FilePathName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    pBitmap->Attach (hBitmap);
    pImageList->Add (pBitmap,RGB(0,0,0));
    FileName=dlg.GetFileName ();
    m_ListCtrl.InsertItem (index,FileName,index);
    index++;
  }
}

到这里你可以编译运行了,在VC6.o下编译通过。

源代码可以发email来索取。

email:ljf518@163.net

使用CImageList的一点心得

CImageList就是一个容器,用来存储图片资源,方便这些资源被CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl,CListCtrl等使用。   ...
  • lishuhuakai
  • lishuhuakai
  • 2015年01月20日 23:03
  • 7343

CImagelist 基本用法

1.综述在MFC中CImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储。该控件是不可见的,通常与其它如CLis...
  • yyyzlf
  • yyyzlf
  • 2009年12月01日 18:38
  • 11945

CListCtrl和CImageList 的使用

An "image list" is a collection of same-sized images, each of which can be referred to by its zero-b...
  • ztz0223
  • ztz0223
  • 2008年01月16日 21:33
  • 5930

CImageList使用总结

CImageList为MFC中的图像集合类,开始序号为0.创建CImageListImage大小: 32 x 32 CImageList初始大小6,递增速率为1CImageList m_imgLis...
  • wangyao1052
  • wangyao1052
  • 2015年05月15日 23:17
  • 924

VC程序使用CImageList类

首先在*.h头文件里面加入CImageList类的定义:CImageList m_ImgList;然后在类的实现里面试用下面的代码创建CImageList链表:m_ImgList.Create(16,...
  • bitsjx
  • bitsjx
  • 2010年12月13日 16:37
  • 11095

CImageList

CImageList百科名片图像列表控制(CImageList )是相同大小图像的一个集合 ,每个集合中均以0 为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式 。可...
  • uda1985
  • uda1985
  • 2011年01月16日 22:05
  • 11274

提取CImageList中的图片到CBitmap 缩放图片

提取CImageList中的图片到CBitmap,图片缩放 - Fortunately小栏 -   功能简介:使用 CImageList 类的 Add 方法将图片资源加入,而后将资源读取出...
  • bible521125
  • bible521125
  • 2015年09月24日 16:21
  • 998

mfc中CImageList的使用

图像列表控件(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,(可以把这些图标看成是以数组方式存储的),图像列表通常由大图标或位图构成,其中包含透明位图模式(实际...
  • CNHK1225
  • CNHK1225
  • 2015年07月24日 14:03
  • 711

VC6中一个顽固很久CImageList的GDI泄露

程序开发告一段落,经过强力测试的时候,发现某处存在一个很不明显的GDI泄露问题。费了好久,追根溯源,居然发现是很早以前底层对图像列表CImageList封装导致。底层库出现问题,总会让我长吃一惊,吓出...
  • gisxu
  • gisxu
  • 2011年11月24日 14:19
  • 843

CImageList类型的释放和使用

imgList = new CImageList; HICON icon[4]; icon[0] = AfxGetApp()->LoadIcon(IDI_ICONA); icon[1] = ...
  • ilikehigame
  • ilikehigame
  • 2015年02月13日 09:36
  • 875
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何向CImageList中加入位图文件
举报原因:
原因补充:

(最多只允许输入30个字)