日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC-Tab Control控件使用

發布時間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC-Tab Control控件使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在MFC當中使用Tab Control控件切換不同的界面,使用起來會復雜一些,至少是比Qt中的Tab Widget復雜得多。我接下來會以一個MFC對話框應用程序為例子,說明Tab Control控件的簡單使用方法。

1.1建立一個MFC對話框應用程序,在對話框中拖入Tab Control控件,效果如下:

?

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

CTabCtrl m_tab;
變量m_tab用來與對話框中的Tab Control控件交互,為此要在DoDataExchange函數中加入DDX_Control語句:
DDX_Control(pDX, IDC_TAB_TEST, m_tab);

?

2.1在資源中插入兩個對話框,作為Tab Control控件切換的界面,然后必須將這兩個對話框的Border屬性設置為None,Style設置為Child,設置后的效果如下圖所示:

?

2.2為創建的兩個對話框建立兩個類,如CTestDlg1,CTestDlg2,添加類的方法:右擊對話框界面,在彈出框中選擇添加類;

3.1在Tab Control控件所在的對話框類的頭文件中添加以下內容并添加切換頁面對話框的頭文件:

public:
? ? ? ? int m_CurSelTab;?
? ? ? ? CTestDlg1 m_page1;?
? ? ? ? CTestDlg2 m_page2;?
? ? ? ? CDialog* pDialog[2]; ?//用來保存對話框對象指針


3.2在對話框類的初始化函數中需要把CTestDlg1、CTestDlg2和Tab Control關聯起來,并保存頁面地址,設置初始頁面,在OnInitDialog()中添加以下實現代碼:

? ? ? ? //為Tab Control增加兩個頁面
?? ?m_tab.InsertItem(0, _T("測試1"));
?? ?m_tab.InsertItem(1, _T("測試2"));
?
?? ?//創建兩個對話框
?? ?m_page1.Create(IDD_DIALOG_TEST1, &m_tab);
?? ?m_page2.Create(IDD_DIALOG_TEST2, &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頁面的個數,數組下標對應著每個頁面的索引(這樣方便快速存取)。


3.3為Tab Control添加消息處理程序,雙擊Tab Control控件,自動進入消息處理程序代碼:
void CTabControlTestDlg::OnTcnSelchangeTabTest(NMHDR *pNMHDR, LRESULT *pResult)
{
?? ?// TODO: 在此添加控件通知處理程序代碼
?
?? ?//把當前的頁面隱藏起來
? ? ? ? pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
? ? ? ? //得到新的頁面索引
? ? m_CurSelTab = m_tab.GetCurSel();
? ? ? ? //把新的頁面顯示出來
? ? ? ? pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);
?
?? ?*pResult = 0;
}

?

本文參考的資料有:http://blog.csdn.net/hustspy1990/article/details/5425365

?

總結

以上是生活随笔為你收集整理的MFC-Tab Control控件使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。