影象列表控制(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中有大量的控制代碼包裝類。所謂控制代碼包裝類,指的是這些類是封裝了系統物件的控制代碼,並提供了一組成員函式作為訪問系統物件的介面...