jasmine214--love

          只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          圖像列表控制(CImageList)

          Posted on 2010-08-30 19:19 幻海藍夢 閱讀(455) 評論(0)  編輯  收藏 所屬分類: C++


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

          一、圖像控制的對象結構

          1 圖像控制的數據成員

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

          2 圖像控制的建立方法

          CimageListimageList建立圖像控制對象結構

          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_COLORILC_COLOR4ILC_COLOR8ILC_COLOR16ILC_COLOR24ILC_COLOR32 ILC_COLORDDBILC_MASKnInitial用來確定圖像列表包含的圖像數量;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; //定義大小圖標像列表

          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);//設置小圖標控制

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

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

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

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

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

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

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

          CImageList* GetImageList( UINT nImage );

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

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

          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 圖像控制在控制中的應用技巧

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

          CImageList * SetImageList( CImageList * pImageList );

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

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

          HIMAGELIST GetImageList() const;

          其返回值為指向TAB控制的圖像列表指針,如果調用不成功則為NULL
          http://www.cnblogs.com/sherlockhua/archive/2008/02/11/1067013.html

          主站蜘蛛池模板: 拜泉县| 武城县| 高平市| 丽水市| 含山县| 兴文县| 历史| 大庆市| 昭通市| 伊宁县| 江源县| 道孚县| 丹凤县| 沙雅县| 清徐县| 平罗县| 河北省| 三江| 柞水县| 深圳市| 海阳市| 曲阳县| 文山县| 阜宁县| 隆化县| 望城县| 调兵山市| 合阳县| 西林县| 北宁市| 云龙县| 衡水市| 崇义县| 桂东县| 延庆县| 河北省| 山阴县| 沁水县| 海兴县| 体育| 玛曲县|