MFC中Tab Control 控件的使用

1.先建立一個對話框MFC應用程序,然後在工具箱裏面把Tab Control控件放到對話框中的合適位置上。

再在對話框類中,聲明一個CTabCtrl變量:

CTabCtrl m_tab;

變量m_tab用來與對話框中的Tab Control控件交互,爲此要在DoDataExchange函數中加入DDX_Control語句:

DDX_Control(pDX, IDC_TAB1, m_tab);

IDC_TAB1是Tab Control控件的ID。

2.建立兩個對話框程序,用來當做Tab Control控件的兩個頁。別忘了把Style改爲Child,Border改爲None。然後就可以在上面加其他控件了。

接着分別爲這兩個對話框建立兩個類,比如CPage1和CPage2。

然後在對話框類頭文件中,加入這兩個對話框對象。同時增加一個變量int m_CurSelTab,用了表明是哪個Page即將被切換。

int m_CurSelTab; 
CPage1 m_page1; 
CPage2 m_page2; 
CDialog* pDialog[2];  //用來保存對話框對象指針

在對話框類的初始化函數中需要把CPage1、CPage2和Tab Control關聯起來,並保存頁面地址,設置初始頁面。

//爲Tab Control增加兩個頁面
m_tab.InsertItem(0, _T("Farm"));
m_tab.InsertItem(1, _T("Note"));
 
//創建兩個對話框
m_page1.Create(IDD_DIALOG1, &m_tab);
m_page2.Create(IDD_DIALOG2, &m_tab);
//設定在Tab內顯示的範圍
CRect rc;
m_tab.GetClientRect(rc);
rc.top += 20;
rc.bottom -= 0;
rc.left += 0;
rc.right -= 0;
m_page1.MoveWindow(&rc);
m_page2.MoveWindow(&rc);
 
//把對話框對象指針保存起來
pDialog[0] = &m_page1;
pDialog[1] = &m_page2;
//顯示初始頁面
pDialog[0]->ShowWindow(SW_SHOW);
pDialog[1]->ShowWindow(SW_HIDE);
//保存當前選擇
m_CurSelTab = 0;

這裏我們用了一個CDialog指針數組來進行保存Tab Control的每個頁,數組的大小是Tab Control頁面的個數,數組下標對應着每個頁面的索引(這樣方便快速存取)。

接下來,爲Tab Control添加消息處理程序:

ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CTabDlg::OnTcnSelchangeTab1)

void CTabDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
    //把當前的頁面隱藏起來
    pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
    //得到新的頁面索引
    m_CurSelTab = m_tab.GetCurSel();
    //把新的頁面顯示出來
    pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);
    *pResult = 0;
}
 

3.如果要在Tab Control控件外面獲取其內部對話框中控件的數據,就需要使用DDX/DDV機制,還要調用相應的UpdateData函數。

    m_page1.UpdateData(); 
    m_page2.UpdateData();


原文地址:http://blog.csdn.net/hustspy1990/article/details/5425365

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章