VC5中使用標簽控件

發表于:2007-07-14來源:作者:點擊數: 標簽:
四川 姜 邊 VC5中,標簽控件是由CTabCtrl類來作數據支持的。做一個標簽控件,主要有以下幾個步驟: 一、在ResourceView標簽頁(就是VC5左面的標簽控件第二項)的對話框中添加TABCTRL(比如取名為MYTABCTRL)。 二、在ClassWizard中為剛添加的標簽控件關聯上一個C
四川 姜 邊

  VC5中,標簽控件是由CTabCtrl類來作數據支持的。做一個標簽控件,主要有以下幾個步驟:
  一、在ResourceView標簽頁(就是VC5左面的標簽控件第二項)的對話框中添加TABCTRL(比如取名為MYTABCTRL)。
  二、在ClassWizard中為剛添加的標簽控件關聯上一個CTabCtrl變量(比如取名為mytab)。
  三、為標簽控件添加項目。
  四、到此為止,一個標簽控件就做好了?,F在便可以用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 clearcase/" target="_blank" >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_COLORDDB 使用系統當前色
  2.BOOL Create(UINT nBitmapID,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中的圖形序號了。這樣,一個帶有圖形的標簽控件就做好了。
  關于標簽控件,在一般編程中我們大約只用到以上函數。上面是我對標簽控件編程的心得,希望能與大家分享。 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97