青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

笑看風云淡

寵辱不驚,看庭前花開花落;去留無意,望天空云卷云舒
posts - 96, comments - 48, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

CImageList用法介紹

Posted on 2007-11-02 15:33 天之驕子 閱讀(8489) 評論(0)  編輯 收藏 引用

圖像列表控制(CImageList)是相同大小圖像的一個集合,每個集合中均以0為圖像的索引序號基數,圖像列表通常由大圖標或位圖構成,其中包含透明位圖模式。可以利用WINDOWS32位應用程序接口函數API來繪制、建立和刪除圖像,并能實現增加、刪除、替換和拖動圖像等操作。圖像列表控制提供了控制圖像列表的基本方法,這些方法在WINDOWS95及以后版本才能實現。

 

(一)圖像控制的對象結構

1、圖像控制的數據成員

m_hImageList 連接圖像對象的控制句柄

 

2、圖像控制的建立方法

CimageList&imageList建立圖像控制對象結構

Create 初始化圖像列表并綁定對象

圖像控制的建立方法如下:

 

BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow );

BOOL Create( UINT nBitmapID, int cx, int nGrow, COLORREF crMask );

BOOL Create( LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask );

BOOL Create( CImageList& imagelist1, int nImage1, CImageList& imagelist2,int nImage2,int dx, int dy );

 

其中各項參數的含義為:cx定義圖像的寬度,單位為象素;cy定義圖象的高度,單位為象素;nFlags確定建立圖像列表的類型,可以是以下值的組合:ILC_COLOR、ILC_COLOR4(圖像為24色)、ILC_COLOR8(圖像為28色)、ILC_COLOR16(圖像為216色)、ILC_COLOR24、ILC_COLOR32、ILC_COLORDDB和ILC_MASK;nInitial用來確定圖像列表包含的圖像數量;nGrow用來確定圖像列表可控制的圖像數量。

 

NbitmapID 用來確定圖像列表聯系的位圖標志值;crMask表示顏色屏蔽位;

 

LpszBitmapID 用來確定包含位圖資源的標識串;

 

imagelist1 指向圖像列表控制對象的一個指針;nImage1圖像列表1中包含的圖像數量;imagelist2指向圖像列表控制對象的一個指針;nImage2圖像列表2中包含的圖像數量;dx表示以象素為單位的圖像寬度;dy表示以象素為單位的圖像高度。

 

同樣,圖像控制的建立也包括兩個步驟,首先建立圖像列表結構,然后建立圖像列表控制。

3、圖像控制的屬性類

圖像控制的屬性類包括返回m_hImageList.控制句柄GetSafeHandle、取得圖像列表中的圖像數量GetImageCount、設置圖像列表的背景顏色SetBkColor、取得圖像列表的背景顏色SetBkColor和取得圖像的有關信息SetBkColor。

 

4、圖像控制的操作方法

圖像控制的操作方法包括將一個圖像列表綁定到一個對象上Attach、將對象上的圖像列表解除綁定并返回句柄Detach、刪除一個圖像列表DeleteImageList、將一個圖像增加到圖像列表中Add和將一個圖像從圖像列表中刪除Remove等。

 

(二)圖像控制的應用技巧

對于圖像控制,同樣不能單獨使用,必須與列表控制、樹控制和標簽控制相互結合應用,下面分別介紹其具體應用技巧。

1、圖像控制在列表控制中的應用技巧

①設置圖像控制CListCtrl::SetImageList的調用格式如下:

CImageList* SetImageList( CImageList* pImageList, int nImageList );

其返回值是指向前一個圖像列表控制的一個指針,如果不存在前一個圖像列表則為NULL;其中參數pImageList是指向圖像列表的標識,nImageList是圖像列表的類型,可以是如下值:

LVSIL_NORMAL 用大圖標方式進行圖像列表;

LVSIL_SMALL 用小圖標方式進行圖像列表;

LVSIL_STATE 以圖像狀態進行圖像列表;

 

②取得圖像控制CListCtrl::GetImageList的調用格式如下:

CImageList* GetImageList( int nImageList ) const;

其返回值為指向圖像列表控制的指針,其中nImageList用來確定取得返回值的圖像列表的值,其取值與設置圖像列表函數相同。

 

③圖像控制在列表控制中的應用示例

注意:加入位圖時要設置圖標顯示狀態為LVSIL_NORMAL,加入icon圖標時,如果圖標大小為32×32,則也設置圖標顯示狀態為LVSIL_NORMAL,否則設置為LVSIL_SMALL。

CImageList Cil1,Cil2; //定義大小圖標像列表

CVCLISTApp *pApp=(CVCLISTApp *)AfxGetApp();//取得列表控制程序

Cil1.Create(32,32,TRUE,2,2); //建立32位圖像控制

Cil1.Add(pApp->LoadIcon(IDI_GJ));//增加選中狀態圖像

Cil1.Add(pApp->LoadIcon(IDI_XS));//增加非選中狀態圖像

Cil2.Create(16,16,TRUE,2,2); //建立16位圖像控制

Cil2.Add(pApp->LoadIcon(IDI_GJ));//增加選中狀態圖像

Cil2.Add(pApp->LoadIcon(IDI_XS));//增加非選中狀態圖像

m_ListCtrl.SetImageList(&Cil1,LVSIL_NORMAL);//設置大圖標控制

m_ListCtrl.SetImageList(&Cil2,LVSIL_SMALL);//設置小圖標控制

另外一種加載BMP位圖的方法是:

CimageList* m_pImageList = new CimageList();

HBITMAP hBitmap;

CBitmap* pBitmap;

strBmpPath = "\\*.bmp";

hBitmap = (HBITMAP)LoadImage(NULL,(LPCTSTR)strBmpPathDisCnnct,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

pBitmap = new CBitmap;

pBitmap->Attach(hBitmap);  

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

delete pBitmap

2、圖像控制在樹控制中的應用技巧

①設置圖像控制CTreeCtrl::SetImageList的調用格式如下:

CImageList* SetImageList( CImageList * pImageList, int nImageListType );

其返回值為指向前前一個圖像列表的指針,否則為NULL;參數pImageList為指向圖像列表的標識,如果pImageList為NULL則所有的圖像都將從樹控制中被清除;nImageListType為圖像列表設置的類型,可以是如下值之一:

TVSIL_NORMAL 設置正常圖像列表,其中包括選中和非選中兩種圖標;

TVSIL_STATE 設置圖像列表狀態,指用戶自定義狀態;

 

②取得圖像控制CTreeCtrl::GetImageList的調用格式如下:

CImageList* GetImageList( UINT nImage );

如果調用成功則返回圖像列表控制指針,否則為NULL;nImage為取得返回值的圖像列表類型,其取值和取得圖像列表控制完全相同。

 

③圖像控制在樹控制中的應用示例

CImageList Cil1,Cil2;//定義大小圖標像列表

CVCTREEApp *pApp=(CVCTREEApp *)AfxGetApp();//獲取應用程序指針

Cil1.Create(16,16,ILC_COLOR,2,2);//建立圖像控制

Cil1.Add(pApp->LoadIcon(IDI_PM));//增加選中狀態圖像

Cil1.Add(pApp->LoadIcon(IDI_CJ));//增加非選中狀態圖像

m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL);//設置圖像控制列表

然后在樹控制的結構定義中進行如下設置:

TCItem.item.iImage=0; //設置未選中圖像索引號

TCItem.item.iSelectedImage=1;//設置選中時圖像引號

 

3、圖像控制在標簽控制中的應用技巧

①設置圖像控制CTabCtrl::SetImageList的調用格式

CImageList * SetImageList( CImageList * pImageList );

其返回值為指向前一個圖像列表的指針,如果不存在前一個圖像列表則為NULL;pImageList為標識TAB控制的圖像列表指針。

 

②取得圖像控制CTabCtrl::GetImageList的調用格式

HIMAGELIST GetImageList() const;

其返回值為指向TAB控制的圖像列表指針,如果調用不成功則為NULL。

在MFC中CImageList類封裝了圖像列表控件的功能,圖像列表是一個具有相同大小的圖像(可以是不同類型)的集合,其主要用于應用程序中大

規模圖標的存儲,該控件是不可見的。通常與其它如CListBox,CComboBox,CComboBoxEx以及CTabCtrl一起使用,為他們提供圖標資源。

圖象的每個集合中均以0為圖象索引基數,可以把這些圖標看成是以數組方式存儲的,圖像列表通常由大圖標或位圖構成,其中包含位圖模式,

實際上,所有的在同一個圖象列表中的圖標都被存儲在一個屏 
幕設備的位圖中。

2.添加圖像的兩種方法
通常可以向CImageList對象中添加位圖和圖標資源。其資源可以是程序中資源文件中的資源,也可以直接從外部文件調入。

(1)從程序中資源文件中添加圖標和位圖圖像如下所示(通常這是最為簡單直觀的方法):

 

// 創建一個CImageList類的指針變量
CImageList* pImageList;
pImageList = new CImageList();
pImageList->Create(32, 32, ILC_COLOR32, 0, 4);

// 添加圖標,圖標可以隨圖像列表大小自動拉伸
pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON2));

// 添加位圖,并使黑色為透明色,如果圖像列表大小和位圖大小不一致可能會導致天添加失敗
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1)
pImageList->Add(&bmp, RGB(0, 0, 0));
bmp.DeleteObject();
bmp.LoadBitmap(IDB_BITMAP2)
pImageList->Add(&bmp, RGB(0, 0, 0));

 

(2)從外部文件中添加圖標和位圖圖像代碼如下所示(這種方法可以是可執行程序更小,便于發行)

 

HBITMAP hBitmap;
CBitmap *pBitmap;
CString FilePathName = "e:\TIME.bmp";
pBitmap = new  CBitmap;
// 從文件導入位圖
hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),FilePathName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
pBitmap->Attach(hBitmap);
m_pImageList->Add(pBitmap, RGB(0,0,0));

 

這樣一個圖像列表控件就創建好了,并且已經添加了圖像,接下來就可以在其它控件中使用其中的圖像。通常需要調用SetImageList(m_pImageList)將當前圖像列表設置為引用圖像源。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品日日夜夜| 欧美成人激情视频免费观看| 欧美视频一二三区| 欧美激情一区二区久久久| 欧美成人a视频| 欧美高清在线视频| 欧美性开放视频| 国产精品伦子伦免费视频| 国产欧美日韩免费| 亚洲成色777777女色窝| 亚洲欧洲另类国产综合| 亚洲精品在线视频观看| 亚洲一区二区三区在线播放| 午夜精品一区二区三区四区 | 亚洲国产精品成人va在线观看| 伊人婷婷欧美激情| 亚洲特黄一级片| 久久久亚洲欧洲日产国码αv| 免费试看一区| 夜夜嗨av一区二区三区四季av | 久久视频一区| 欧美日韩亚洲综合| 国产亚洲永久域名| 日韩一级在线| 久久女同精品一区二区| 亚洲日本欧美天堂| 99国产精品视频免费观看一公开| 欧美一级视频免费在线观看| 欧美高清视频| 好吊色欧美一区二区三区四区| 日韩视频在线一区二区| 欧美一区二区在线播放| 欧美高清视频在线播放| 香蕉国产精品偷在线观看不卡| 欧美fxxxxxx另类| 国产一区二区三区四区hd| 亚洲制服丝袜在线| 亚洲国产视频a| 欧美中文字幕视频| 欧美日韩在线播放一区二区| 国产综合视频在线观看| 亚洲一区二区三区免费视频| 欧美激情一区二区三区蜜桃视频| 性做久久久久久久久| 亚洲二区精品| 欧美一区二区三区视频免费播放| 欧美日韩国产成人在线免费| 亚洲日本成人网| 美女国产精品| 亚洲欧美日本在线| 亚洲一区免费网站| 欧美日韩色综合| 一区二区动漫| 欧美福利小视频| 久久青草欧美一区二区三区| 国产亚洲精品成人av久久ww| 欧美一区二区三区视频免费| 亚洲新中文字幕| 欧美福利精品| 一区二区国产日产| 亚洲欧洲一二三| 欧美gay视频激情| 最新日韩在线视频| 亚洲高清成人| 欧美日韩国产色综合一二三四 | 欧美黄色免费网站| 亚洲狠狠婷婷| 91久久久亚洲精品| 欧美激情第六页| 洋洋av久久久久久久一区| 亚洲日本aⅴ片在线观看香蕉| 免费观看亚洲视频大全| 亚洲激情在线视频| 99视频有精品| 国产精品综合久久久| 亚洲欧美一区二区原创| 亚洲综合欧美日韩| 国产欧美一区二区视频| 久久影院午夜片一区| 麻豆精品国产91久久久久久| avtt综合网| 午夜久久久久| 亚洲国产精品va| 亚洲少妇诱惑| 在线播放中文字幕一区| 亚洲精品一区二区三区婷婷月 | 在线亚洲电影| 国产精品视频久久久| 久久久青草青青国产亚洲免观| 久久亚洲精品中文字幕冲田杏梨| 久久精品亚洲乱码伦伦中文| 另类国产ts人妖高潮视频| 亚洲伦理在线观看| 亚洲欧美综合| 妖精视频成人观看www| 性欧美xxxx大乳国产app| 亚洲日韩欧美视频| 亚洲欧美电影院| 亚洲欧洲日本专区| 亚洲欧美日韩区| 亚洲美女av黄| 久久精品欧洲| 性欧美精品高清| 欧美精品成人一区二区在线观看 | 欧美激情亚洲| 亚洲网站在线| 亚洲国产成人在线播放| 亚洲天堂成人| 夜夜爽夜夜爽精品视频| 欧美一区午夜精品| 亚洲欧美国产高清| 欧美极品一区| 欧美高清视频一区二区三区在线观看| 欧美系列一区| 亚洲欧洲精品天堂一级| 红桃av永久久久| 亚洲欧美另类国产| 亚洲一区二区视频在线| 欧美乱妇高清无乱码| 老巨人导航500精品| 国产精品亚发布| 日韩一区二区精品视频| 亚洲日本中文| 男女视频一区二区| 久久久www成人免费无遮挡大片| 欧美视频日韩视频| 日韩系列在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美成ee人免费视频| 久久一区激情| 精品成人一区| 久久麻豆一区二区| 久久中文字幕一区二区三区| 国产一区在线免费观看| 小黄鸭精品密入口导航| 午夜伦欧美伦电影理论片| 欧美手机在线| 亚洲视频在线二区| 欧美在线视频观看| 欧美www视频| 亚洲成人自拍视频| 欧美本精品男人aⅴ天堂| 亚洲国产一区二区视频| 亚洲片在线资源| 欧美日韩另类在线| 亚洲性图久久| 欧美在线观看www| 国内外成人免费视频 | 国产精品sss| 亚洲视频精选在线| 欧美一区二区视频在线| 国内外成人免费激情在线视频网站 | 国产一区二区中文字幕免费看| 亚洲欧美日韩在线综合| 久久精品噜噜噜成人av农村| 国产视频不卡| 欧美fxxxxxx另类| 亚洲精选视频在线| 久久精品中文字幕免费mv| 91久久线看在观草草青青| 欧美午夜电影网| 久久久久国色av免费看影院| 亚洲激情影视| 欧美有码在线视频| 亚洲精品乱码久久久久久按摩观| 欧美激情精品久久久久久| 亚洲小少妇裸体bbw| 欧美成人在线影院| 亚洲婷婷综合久久一本伊一区| 国产小视频国产精品| 免费欧美在线| 亚洲一区亚洲二区| 国产精品美女主播| 日韩天堂在线视频| 久久性天堂网| 欧美bbbxxxxx| 亚洲欧美日韩中文视频| 国产欧美一区二区精品婷婷| 麻豆av福利av久久av| 一区二区三区欧美在线| 久久免费的精品国产v∧| 亚洲黄色在线| 国产色视频一区| 欧美日韩成人综合| 久久久久久九九九九| 国产精品99久久久久久人| 六月丁香综合| 欧美一级久久| 亚洲色诱最新| 亚洲日本欧美| 黄色成人av网站| 国产精品高潮呻吟久久av无限| 久久全国免费视频| 亚洲欧美制服中文字幕| 99pao成人国产永久免费视频| 久久久青草婷婷精品综合日韩| 午夜精品视频在线观看一区二区| 日韩视频不卡| 亚洲高清不卡在线| 国产一级一区二区|