溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

VC5中如何使用標(biāo)簽控件

發(fā)布時(shí)間:2021-09-27 15:11:51 來源:億速云 閱讀:133 作者:小新 欄目:編程語言

小編給大家分享一下VC5中如何使用標(biāo)簽控件,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

  VC5中,標(biāo)簽控件是由CTabCtrl類來作數(shù)據(jù)支持的。做一個(gè)標(biāo)簽控件,主要有以下幾個(gè)步驟:
  一、在ResourceView標(biāo)簽頁(就是VC5左面的標(biāo)簽控件第二項(xiàng))的對(duì)話框中添加TABCTRL(比如取名為MYTABCTRL)。
  二、在ClassWizard中為剛添加的標(biāo)簽控件關(guān)聯(lián)上一個(gè)CTabCtrl變量(比如取名為mytab)。
  三、為標(biāo)簽控件添加項(xiàng)目。
  四、到此為止,一個(gè)標(biāo)簽控件就做好了?,F(xiàn)在便可以用ClassWizard為標(biāo)簽控件添加消息映射了。
  下面重點(diǎn)介紹為標(biāo)簽控件添加項(xiàng)目的方法。
  CTabCtrl類有一個(gè)成員函數(shù)InsertItem,它的原型是:
  BOOL InsertItem(int nItem,TC_ITEM*pTabCtrlItem);
  其中第一個(gè)參數(shù)是加入項(xiàng)目的序號(hào),此序號(hào)將在調(diào)用CTabCtrl的另一個(gè)成員函數(shù)GetCurSel()時(shí)作為返回值。與GetCurSel()對(duì)應(yīng)的就是SetCurSel(int nItem),SetCurSel函數(shù)可改變標(biāo)簽控件當(dāng)前選定的項(xiàng)目,其中nItem就是該項(xiàng)目的序號(hào)。
  InsertItem的關(guān)鍵在于第二個(gè)參數(shù)PTabCtrlItem。這是一個(gè)指向TC_ITEM結(jié)構(gòu)的指針。
  TC_ITEM結(jié)構(gòu)的定義如下:
  typedef struct_TC_ITEM
  {
  UINT mask; // 標(biāo)簽控件的類型
  UINT lnReserved1; // VC保留,勿用
  UINT lnReserved2; // VC保留,勿用
  LPSTR pszText; // 標(biāo)簽控件的項(xiàng)目文字
  int cchTextMax; // pszText的長度
  int iImage; // 標(biāo)簽控件的圖形序號(hào)
  LPARAM lParam; // 用于交換的數(shù)據(jù)
  }TC_ITEM;
  在編程中,真正經(jīng)常使用的只有mask、pszText、iImage三個(gè)成員變量。
  1.mask
  指定標(biāo)簽控件的類型。它可以是以下三個(gè)值:
  TCIF_TEXT pszText成員有效
  TCIF_IMAGE iImage成員有效
  TCIF_PARAM iParam成員有效
  如果要使用多個(gè)屬性,應(yīng)該用按位或運(yùn)算符“|”連接。例如要使pszText和iImage成員同時(shí)有效,則用TCIF_TEXT|TCIF_IMAGE作為mask的值。
  2.pszText
  標(biāo)簽控件的項(xiàng)目文字,可直接賦予字符串值。此時(shí)標(biāo)簽控件的類型必須有TCIF_TEXT。
  3.iImage
  標(biāo)簽控件的圖形序號(hào),這是為標(biāo)簽控件添加圖形所必須用到的一個(gè)成員變量。此標(biāo)簽控件必須有TCIF_IMAGE。
  在賦值時(shí),只需給這三個(gè)(有時(shí)是兩個(gè))變量賦值就行了。
  下面為大家介紹iImage的用法。
  iImage中存儲(chǔ)的是項(xiàng)目的圖形序號(hào)。這個(gè)序號(hào)所對(duì)應(yīng)的圖形(可能為圖標(biāo)和位圖)將被顯示到標(biāo)簽控件項(xiàng)目文字的左邊。這些圖形可以是任意大小,但必須一樣大。
  標(biāo)簽控件的每一個(gè)項(xiàng)目的iImage組成了一個(gè)序列,這個(gè)序列所對(duì)應(yīng)的圖形是用另一個(gè)類CImageList來管理的。下面請(qǐng)看CImageList的用法。
  我在使用CImageList時(shí),只用到以下幾個(gè)成員函數(shù):
  1.BOOL Create(int cx,int cy,UINT nFlags,int nInitial,int nGrow);
  這個(gè)函數(shù)建立一個(gè)含nGrow個(gè)圖形(每個(gè)圖形為cx長,cy高以nInitial為初值:通常為0)的空CImageList;其中有個(gè)nFlages參數(shù),它用來指定圖形的顏色屬性,它的值只能為以下幾個(gè)值中的一個(gè):
  ILC_COLOR 使用默認(rèn)顏色(一般為16色)
  ILC_COLOR4 使用4位色(16色)
  ILC_COLOR8 使用8位色(256色)
  ILC_COLOR16 使用16位色(64K色)
  ILC_COLOR24 使用24位色(16M色)
  ILC_COLOR32 使用32位色(4G色)
  ILC_COLORDDB 使用系統(tǒng)當(dāng)前色
  2.BOOL Create(UINT nBitmapID,int cx,int nGrow,COLORREF crMask);
  這個(gè)函數(shù)是以nBitmapID所代表的位圖(已在rc文件中定義,與定義工具條的位圖相似)建立一個(gè)含有nGrow個(gè)圖形(每個(gè)圖形長為cx)的CImageList;
  其中crMask指定位圖中的什么顏色將被替換為黑色,一般就用黑色(RGB(0,0,0))。
  3.int Add(CBitmap*pbmImage,COLORREF crMask);
  這個(gè)函數(shù)往CImageList中追加一個(gè)位圖。其中nbmImage可以通過先定義一個(gè)CBitmap指針,再用CBitmap的成員LoadBitman來得到。比如:
  CBitmap*mvbitmap;
  mvhitmap=new CBitmap();
  mvbitmap->LoadBitmap(MYPICTURE); // MYPICTURE是已定義的位圖資源crMask參數(shù)與前面相同。
  4.int Add(HICON hIcon):
  這個(gè)函數(shù)往CImageList中追加一個(gè)圖標(biāo)。
  其中hIcon可以用AfxGetApp()->LoadIcon(UINT nIDResource)來得到。如:AfxGetApp()->LoadIcon(MYICON);//其中MYICON是已定義的圖標(biāo)資源,當(dāng)CImageList定制好后,調(diào)用CTabCtrl的成員函數(shù)SetImageList,其原型如下:
  CImageList*SetImageList(CImageList*pImageList);
  其中的pImageList正是指向我們剛才定制的CImageList對(duì)象的指針,而以前的iImage參數(shù)就是CImageList中的圖形序號(hào)了。這樣,一個(gè)帶有圖形的標(biāo)簽控件就做好了。

以上是“VC5中如何使用標(biāo)簽控件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI