轉帖|使用教程|編輯:鮑佳佳|2021-04-19 09:36:24.860|閱讀 454 次
概述:前面兩節講了樹形控件Tree Control,本節開始講解標簽控件Tab Control,也可以稱為選項卡控件。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
前面兩節講了樹形控件Tree Control,本節開始講解標簽控件Tab Control,也可以稱為選項卡控件。在內容開始前為大家介紹一款MFC界面開發控件:
Xtreme Toolkit Pro:是屢獲殊榮的VC界面庫,是MFC開發中最全面界面控件套包,它提供了Windows開發所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。
標簽控件簡介
標簽控件也比較常見。它可以把多個頁面集成到一個窗口中,每個頁面對應一個標簽,用戶點擊某個標簽時,它對應的頁面就會顯示。下圖是Windows系統配置中標簽控件的例子:
使用標簽控件我們可以同時加載多個有關聯的頁面,用戶只需點擊標簽即可實現頁面切換,方便靈活的進行操作。每個標簽除了可以顯示標簽文本,還可以顯示圖標。
標簽控件相當于是一個頁面的容器,可以容納多個對話框,而且一般也只容納對話框,所以我們不能直接在標簽控件上添加其他控件,必須先將其他控件放到對話框中,再將對話框添加到標簽控件中。最終我們點擊標簽切換頁面時,切換的不是控件的組合,而是對話框。
標簽控件的通知消息
在對標簽控件進行一些操作,比如點擊標簽時,標簽控件也會向父窗口發送一些通知消息。我們可以為這些通知消息添加處理函數,實現各種功能。標簽控件的主要通知消息及含義如下所示:
TCN_SELCHANGE:通知父窗口控件的標簽選擇項已經改變
TCN_SELCHANGING 通知父窗口控件的標簽選擇項正在改變
TCN_KEYDOWN:通知父窗口在控件范圍內鍵盤被按下
TCN_GETOBJECT:具有TCS_EX_REGISTERDROP擴展特性并且對象被拖動時的通知消息
TCN_FOCUSCHANGE:通知父窗口控件的按鈕聚焦已經改變
NM_CLICK:通知父窗口用戶在控件區域范圍內點擊了鼠標左鍵
NM_RCLICK:通知父窗口用戶在控件區域范圍內點擊了鼠標右鍵
NM_RELEASEDCAPTURE:通知父窗口在控件區域范圍內釋放鼠標捕獲消息
標簽控件的相關結構體
標簽控件在使用中也有一些相關的結構體經常用到,主要以下幾個:
1. TCITEMHEADER結構體
該結構體用來指定或獲取標簽控件本身的屬性。用在TCM_INSERTITEM、TCM_GETITEM和TCM_SETITEM消息中。
C++代碼
typedef struct tagTCITEMHEADER { UINT mask; // 掩碼,可以為TCIF_IMAGE(iImage成員有效)、TCIF_RTLREADING、TCIF_TEXT(pszText成員有效) UINT lpReserved1; // 預留 UINT lpReserved2; // 預留 LPTSTR pszText; // 標簽文本字符串 int cchTextMax; int iImage; // 圖標在標簽控件圖像序列中的索引 } TCITEMHEADER, *LPTCITEMHEADER;
2. TCITEM結構體
該結構體用來指定或獲取標簽頁的屬性。用在TCM_INSERTITEM、TCM_GETITEM和TCM_SETITEM消息中。
C++代碼
typedef struct tagTCITEM { UINT mask; // 掩碼,可以是TCIF_IMAGE(iImage成員有效)、TCIF_PARAM(lParam成員有效)、TCIF_RTLREADING、TCIF_STATE、TCIF_TEXT(pszText成員有效) #if (_WIN32_IE >= 0x0300) DWORD dwState; DWORD dwStateMask; #else UINT lpReserved1; UINT lpReserved2; #endif LPTSTR pszText; int cchTextMax; int iImage; LPARAM lParam; // 與標簽頁關聯的32位數據 } TCITEM, *LPTCITEM;
3. TCHITTESTINFO結構體
該結構體包含了鼠標單擊測試的信息。
C++代碼
typedef struct tagTCHITTESTINFO { POINT pt; // 鼠標點擊測試的客戶區坐標 UINT flags; // 接收點擊測試的結果。有以下幾種:TCHT_NOWHERE(坐標點不在標簽上)、TCHT_ONITEM(坐標點在標簽上但不在標簽文本或圖標上)、TCHT_ONITEMICON(坐標點在標簽圖標上)、TCHT_ONITEMLABEL(坐標點在標簽文本上) } TCHITTESTINFO, *LPTCHITTESTINFO;
4. NMTCKEYDOWN結構體
該結構體包含了標簽控件中鍵盤按下的相關信息。主要用在TCN_KEYDOWN通知消息中。
C++代碼
typedef struct tagNMTCKEYDOWN { NMHDR hdr; WORD wVKey; UINT flags; } NMTCKEYDOWN;
標簽控件的上半部分就講到這里了,下節教程將繼續講解標簽控件的知識和應用實例。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn