MFC Tab Control 控件示例

1. 新建一个MFC项目
   1) 文件/新建/项目/ 
   2) 选择"MFC 应用程序",并输入名称 "MFCTabCtrlTest",点"确定"
   3) 下一步
   4) 选择"基于对号框",点击"下一步"
   5) 可以勾选"最小化框"、"最大化框", 可以输入 "对话框标题:Tab Control 测试"
   6) 可直接点"完成" 或 点"下一步"后再点"完成"

2. 在对话框窗口拖入 Tab Control,设置控件位置、大小及 ID(IDC_TAB1) 

3. 添加变量 m_tab
   1) 在对话框窗口(IDD_MFCTABCTRLTEST_DIALOG) 右击 Tab Control,选择"添加变量"
   2)输入变量名(m_tab),点击"完成"
   在 MFCTabCtrlTestDlg.h 中可以看到添加的变量:CTabCtrl m_tab;
   在 MFCTabCtrlTestDlg.cpp 文件的 void CMonitorPage1::DoDataExchange(CDataExchange* pDX) 函数中添加如下代码
   DDX_Control(pDX, IDC_TAB1, m_tab);

4. 添加对话框 IDD_DIALOG_TABITEM1 和 IDD_DIALOG_TABITEM2 (如果资源视图未显示,点击菜单中"视图/其他窗口/资源视图"即可)
   1) 资源视图/MFCTabCtrlTest.rc/Dialog
   2) 右击 Dialog 选择"插入 Dialog"
   3) 设置 ID: IDD_DIALOG_TABITEM1、Style: Child 及 Caption: Dialog Hello、  Border: None、
   4) 窗口(IDD_DIALOG_TABITEM1 )中拖入 Static Text,设置为:Hello World!
   5) 在对话框窗口右击,选择"添加类": 输入类名"CDlgPage1", 点击"完成"

   同样添加对话框 IDD_DIALOG_TABITEM2,属性设置如下:
   Style: Child,Caption: Dialog My God,窗口中拖入 Static Text,设置为:My God!,添加类: CDlgPage2

5. MFCTabCtrlTestDlg.h 中
   包含头文件

    #include "DlgPage1.h" 
    #include "DlgPage2.h"

 

   定义变量
 

    CDlgPage1  m_page1;
    CDlgPage2  m_page2;//全局变量

6. MFCTabCtrlTestDlg.cpp 中 BOOL CMFCTabCtrlTestDlg::OnInitDialog() 函数添加如下代码
   

    m_tab.InsertItem(0, L"Page 1 Hello");//0代表tab标签索引
    m_tab.InsertItem(1, L"Page 2 God");

    m_page1.Create(MAKEINTRESOURCEW(IDD_DIALOG_TABITEM1), &m_tab);
    m_page2.Create(MAKEINTRESOURCEW(IDD_DIALOG_TABITEM2), &m_tab);    //实现绑定
        
    CRect rect;                 //位置对象,四点决定矩形大小
    m_tab.GetClientRect(rect);
    rect.top += 20;             //在上面留一段小空间
    //rect.bottom -= 4;
    //rect.left += 4;
    //rect.right -= 8;

    //设置子对话框尺寸并移动到指定位置
    m_page1.MoveWindow(rect);
    m_page2.MoveWindow(rect);

    //设置隐藏和显示
    m_page1.ShowWindow(SW_SHOW);
    m_page2.ShowWindow(SW_HIDE);

    //设置默认的选项卡
    m_tab.SetCurSel(0);


7. 资源视图/MFCTabCtrlTest.rc/Dialog/打开对话框窗口(IDD_MFCTABCTRLTEST_DIALOG)/ 选中 Tab Control(IDC_TAB1) / 
   事件(点击"闪电")/ TCN_SELCHANGE / 添加选择状态发生改变时响应该函数 OnTcnSelchangeTab1
   MFCTabCtrlTestDlg.cpp 中 
   1) BEGIN_MESSAGE_MAP 中添加如下代码:
        ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CMFCTabCtrlTestDlg::OnTcnSelchangeTab1)
   2) 函数 void CMFCTabCtrlTestDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)


8. 选择状态发生改变时响应该函数 void CMFCTabCtrlTestDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult) 中添加如下代码 

switch (m_tab.GetCurSel())  //获取当前选中的索引
    {
    case 0:
        m_page1.ShowWindow(SW_SHOW);
        m_page2.ShowWindow(SW_HIDE);
        break;

    case  1:
        m_page1.ShowWindow(SW_HIDE);
        m_page2.ShowWindow(SW_SHOW);
        break;

    default:
        break;

    }


 

你可能感兴趣的:(MFC,C/C++)