mfc中CImageList的使用簡介

2021-04-22 08:52:17 字數 3521 閱讀 8700

影象列表控制(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、ilc_color8、ilc_color16、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 影象控制在列表控制中的應用技巧

1.1 設定影象控制clistctrl::setimagelist的呼叫格式如下:

cimagelist* setimagelist( cimagelist* pimagelist, int nimagelist );

其返回值是指向前乙個影象列表控制的乙個指標,如果不存在前乙個影象列表則為null;其中引數pimagelist是指向影象列表的標識,nimagelist是影象列表的型別,可以是如下值:

lvsil_normal 用大圖示方式進行影象列表;

lvsil_small 用小圖示方式進行影象列表;

lvsil_state 以影象狀態進行影象列表;

1.2 取得影象控制clistctrl::getimagelist的呼叫格式如下:

cimagelist* getimagelist( int nimagelist ) const;

其返回值為指向影象列表控制的指標,其中nimagelist用來確定取得返回值的影象列表的值,其取值與設定影象列表函式相同。

③影象控制在列表控制中的應用示例

cimagelist cil1,cil2; //定義大小圖示像列表

cil1.create(32,32,true,2,2);//建立32位影象控制

cil2.create(16,16,true,2,2); //建立16位影象控制

m_listctrl.setimagelist(&cil1,lvsil_normal);//設定大圖示控制

m_listctrl.setimagelist(&cil2,lvsil_small);//設定小圖示控制

2 影象控制在樹控制中的應用技巧

2.1 設定影象控制ctreectrl::setimagelist的呼叫格式如下:

cimagelist* setimagelist( cimagelist * pimagelist, int nimagelisttype );

其返回值為指向前前乙個影象列表的指標,否則為null;引數pimagelist為指向影象列表的標識,如果pimagelist為null則所有的影象都將從樹控制中被清除;nimagelisttype為影象列表設定的型別,可以是如下值之一:

tvsil_normal 設定正常影象列表,其中包括選中和非選中兩種圖示;

tvsil_state 設定影象列表狀態,指使用者自定義狀態;

2.2 取得影象控制ctreectrl::getimagelist的呼叫格式如下:

cimagelist* getimagelist( uint nimage );

如果呼叫成功則返回影象列表控制指標,否則為null;nimage為取得返回值的影象列表型別,其取值和取得影象列表控制完全相同。

2.3 影象控制在樹控制中的應用示例

cimagelist cil1,cil2;//定義大小圖示像列表

cil1.create(16,16,ilc_color,2,2);//建立影象控制

m_treectrl.setimagelist(&cil1,tvsil_normal);//設定影象控制列表

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

tcitem.item.iimage=0; //設定未選中影象索引號

tcitem.item.iselectedimage=1;//設定選中時影象引號

3 影象控制在控制中的應用技巧

1.設定影象控制ctabctrl::setimagelist的呼叫格式

cimagelist * setimagelist( cimagelist * pimagelist );

其返回值為指向前乙個影象列表的指標,如果不存在前乙個影象列表則為null;pimagelist為標識tab控制的影象列表指標。

2 取得影象控制ctabctrl::getimagelist的呼叫格式

himagelist getimagelist() const;

其返回值為指向tab控制的影象列表指標,如果呼叫不成功則為null。

MFC中的視窗

mfc 視窗 mfc視窗不對視窗進行直接的控制,而在api環境中卻是可以的。如果不能在api環境中實現某項功能,那麼 肯定也不能在mfc環境中實現。舉例來說,mfc庫的cwnd可以建立乙個視窗,但它只是過去在api環境中使用 api呼叫的封裝。建立mfc視窗是複雜的,首先,建立類cwnd的乙個例項,...

MFC中的控制項

mfc的各種控制項使用 靜態控制項,包括,靜態文字和分組框,預設id都是idc static.按鈕控制項 原形按鈕,記住要加group屬性.register 宣告為暫存器變數 explicit 禁止自動轉換 mutable修飾的變數在常函式中也可以被修改了 組合框和列表框控制項 控制項類是ccomb...

MFC中的控制代碼

1.引出控制代碼 cdc問題 1.cdc dc dc.lineto point 無法執行 2.cdc dc getdc dc lineto point 就可以執行了 mfc中有大量的控制代碼包裝類。所謂控制代碼包裝類,指的是這些類是封裝了系統物件的控制代碼,並提供了一組成員函式作為訪問系統物件的介面...