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