VC5中使用標籤控制元件 (轉)
VC5中使用標籤
VC5中,標籤控制元件是由CTabCtrl類來作資料支援的。做一個標籤控制元件,主要有以下幾個步驟:
一、在ReView標籤頁(就是VC5左面的標籤控制元件第二項)的對話方塊中新增TABCTRL(比如取名為MYTABCTRL)。
二、在ClassWizard中為剛新增的標籤控制元件關聯上一個CTabCtrl變數(比如取名為mytab)。
三、為標籤控制元件新增專案。
四、到此為止,一個標籤控制元件就做好了。現在便可以用ClassWizard為標籤控制元件新增訊息對映了。
下面重點介紹為標籤控制元件新增專案的方法。
CTabCtrl類有一個成員InsertItem,它的原型是:
BOOL InsertItem(int nItem,TC_ITEM*pTabCtrlItem);
其中第一個引數是加入專案的序號,此序號將在CTabCtrl的另一個成員函式GetCurSel()時作為返回值。與GetCurSel()對應的就是SetCurSel(int nItem),SetCurSel函式可改變標籤控制元件當前選定的專案,其中nItem就是該專案的序號。
InsertItem的關鍵在於第二個引數PTabCtrlItem。這是一個指向TC_ITEM結構的指標。
TC_ITEM結構的定義如下:
typedef struct_TC_ITEM
{
UINT mask; // 標籤控制元件的型別
UINT lnReserved1; // VC保留,勿用
UINT lnReserved2; // VC保留,勿用
LPSTR pszText; // 標籤控制元件的專案文字
int cchTextMax; // pszText的長度
int iImage; // 標籤控制元件的圖形序號
LPARAM lParam; // 用於的資料
}TC_ITEM;
在中,真正經常使用的只有mask、pszText、iImage三個成員變數。
1.mask
指定標籤控制元件的型別。它可以是以下三個值:
TCIF_TEXT pszText成員有效
TCIF_IMAGE iImage成員有效
TCIF_PARAM iParam成員有效
如果要使用多個屬性,應該用按位或運算子“|”連線。例如要使pszText和iImage成員同時有效,則用TCIF_TEXT|TCIF_IMAGE作為mask的值。
2.pszText
標籤控制元件的專案文字,可直接賦予字串值。此時標籤控制元件的型別必須有TCIF_TEXT。
3.iImage
標籤控制元件的圖形序號,這是為標籤控制元件新增圖形所必須用到的一個成員變數。此標籤控制元件必須有TCIF_IMAGE。
在賦值時,只需給這三個(有時是兩個)變數賦值就行了。
下面為大家介紹iImage的用法。
iImage中的是專案的圖形序號。這個序號所對應的圖形(可能為圖示和點陣圖)將被顯示到標籤控制元件專案文字的左邊。這些圖形可以是任意大小,但必須一樣大。
標籤控制元件的每一個專案的iImage組成了一個序列,這個序列所對應的圖形是用另一個類CImageList來管理的。下面請看CImageList的用法。
我在使用CImageList時,只用到以下幾個成員函式:
1.BOOL Create(int cx,int cy,UINT nFlags,int nInitial,int nGrow);
這個函式建立一個含nGrow個圖形(每個圖形為cx長,cy高以nInitial為初值:通常為0)的空CImageList;其中有個nFlages引數,它用來指定圖形的顏色屬性,它的值只能為以下幾個值中的一個:
ILC_COLOR 使用預設顏色(一般為16色)
ILC_COLOR4 使用4位色(16色)
ILC_COLOR8 使用8位色(256色)
ILC_COLOR16 使用16位色(64K色)
ILC_COLOR24 使用24位色(16M色)
ILC_COLOR32 使用32位色(4G色)
ILC_COLORD 使用當前色
2.BOOL Create(UINT nBitmD,int cx,int nGrow,COLORREF crMask);
這個函式是以nBitmapID所代表的點陣圖(已在rc中定義,與定義工具條的點陣圖相似)建立一個含有nGrow個圖形(每個圖形長為cx)的CImageList;
其中crMask指定點陣圖中的什麼顏色將被替換為黑色,一般就用黑色(RGB(0,0,0))。
3.int Add(CBitmap*pbmImage,COLORREF crMask);
這個函式往CImageList中追加一個點陣圖。其中nbmImage可以透過先定義一個CBitmap指標,再用CBitmap的成員LoadBitman來得到。比如:
CBitmap*mvbitmap;
mvhitmap=new CBitmap();
mvbitmap->LoadBitmap(MYPICTURE); // MYPICTURE是已定義的點陣圖資源crMask引數與前面相同。
4.int Add(HICON hIcon):
這個函式往CImageList中追加一個圖示。
其中hIcon可以用AfxGetApp()->LoadIcon(UINT nIDResource)來得到。如:AfxGetApp()->LoadIcon(MYICON);//其中MYICON是已定義的圖示資源,當CImageList定製好後,呼叫CTabCtrl的成員函式SetImageList,其原型如下:
CImageList*SetImageList(CImageList*pImageList);
其中的pImageList正是指向我們剛才定製的CImageList的指標,而以前的iImage引數就是CImageList中的圖形序號了。這樣,一個帶有圖形的標籤控制元件就做好了。
關於標籤控制元件,在一般程式設計中我們大約只用到以上函式。上面是我對標籤控制元件程式設計的心得,希望能與大家分享。
(四川 姜 邊)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988886/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- tkinter中lable標籤控制元件(二)控制元件
- html中a標籤中的onclick和href的使用--轉載HTML
- HTML中的標籤的使用HTML
- Jstl中標籤的使用JS
- Maven中optional標籤詳解(轉)Maven
- VOC標籤轉化為YOLO標籤YOLO
- HTML標籤(基本標籤的使用)HTML
- java <%!%>標籤和<%%>標籤的使用Java
- Jsp中param標籤的使用JS
- [轉]從EXIF標籤中估計焦距
- Flutter 標籤類控制元件大全ChipFlutter控制元件
- html標籤使用HTML
- Golang中struct結構標籤(Tag)的使用GolangStruct
- HTML5中audio標籤的使用HTML
- jsp中c標籤的詳細使用JS
- 阻止a標籤的跳轉,a標籤自動跳轉引起的錯誤
- HTML 標籤的使用HTML
- vue3中使用<RouterView/>標籤飄紅VueView
- 求助:如何中斷jsf中多個自定義標籤中的其他標籤JS
- IOS 學習筆記(4) 控制元件 標籤(UILabel)的使用方法iOS筆記控制元件UI
- pom中repositories標籤
- PbootCMS可使用的列表標籤內容tags標籤呼叫boot
- Flutter 基於ChoiceChip的標籤選擇控制元件Flutter控制元件
- HTML常用標籤的使用HTML
- s:iterator標籤的使用
- HTML標籤 轉 NSAttributedStringHTML
- JSP標籤庫介紹(1)什麼是標籤庫? (轉)JS
- JSP標籤庫介紹(1)定製標籤內幕 (轉)JS
- Win32全域性鉤子在VC5中的實現 (轉)Win32
- 淺析Bootstrap中Tab(標籤頁)的使用方法boot
- Android自定義標籤列表控制元件LabelsView解析Android控制元件View
- HTML中IMG標籤總結HTML
- HTML中的script標籤研究HTML
- elementplus中標籤頁操作
- properties標籤和typeAliases標籤
- 使用<meta>標籤實現指定時間後跳轉效果
- JavaScript各類標籤的使用JavaScript
- HTML框架標籤的使用-<frameset>HTML框架