Tab控件使用心得_1227

来源:互联网 发布:在线作诗软件生成器 编辑:程序博客网 时间:2024/06/07 04:57

VCTAB控件实例

 

1. 在主面板上拖放一Tab Control控件,我们这里建立其在主面板类(CTabSampleDlg)里面的成员变量m_tab

 

//通过右击Tab控件增加此变量m_tab

//然后双击该Tab控件,增加OnSelchangeTab函数句柄

 

2.添加两个子对话框(如下图,右键资源属性对话框),将其属性设置为“childnone”(在属性->样式中,选择 下层)。

//右键子对话框,选择属性,在样式tab页面中

//chid为样式选项的下层;none为边框选项的无

这里要注意了,添加的必须是继承自DIALOG类的对话框,而不是PropPage对话框,否则的话,子面板将不能响应用户操作。然后生成两个新类“CTabPage1 CTabPage2”。

//右键子对话框,选择建立类向导,会自动弹出添加新类窗口

//选择创建一个新类

 

 

3.CTabSampleDlg类添加两个成员变量,他们分别是CTabPage1CTabPage2类的实例。

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//CTabSampleDlg.cpp文件一开头位置中手工输入CTabPage1 m_page1;

//                                 CTabPage2 m_page2;

//定义为全局变量,不是放在类中做成员变量!

//另务必将前面新增的两个对话框类CTabPage1/CTabPage2的头文件也用#include加到CTabSampleDlg.cpp

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

4.CTabSampleDlg类的OnInitDialog成员函数内(即主对话框界面的OnInitDialog函数中)的适当位置添加如下代码。

 

BOOL CTabSampleDlg::OnInitDialog()

{

CDialog::OnInitDialog();

 

// Add "About..." menu item to system menu.

 

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

 

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

   CString strAboutMenu;

   strAboutMenu.LoadString(IDS_ABOUTBOX);

   if (!strAboutMenu.IsEmpty())

   {

    pSysMenu->AppendMenu(MF_SEPARATOR);

    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

   }

}

 

// Set the icon for this dialog. The work does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE);    // Set big icon

SetIcon(m_hIcon, FALSE);   // Set small icon

//==========================================================

//初始化TAB

TCITEM tc1,tc2;

tc1.mask = TCIF_TEXT;

tc1.pszText = "第一页";

tc2.mask = TCIF_TEXT;

tc2.pszText = "第二页";

 

m_tab.InsertItem(0, &tc1);

m_tab.InsertItem(1, &tc2); //到这里只是添加了两个tab

 

CRect rec;

m_tab.GetClientRect(&rec);//获得TAB控件的坐标

 

//定位选项卡页的位置,这里可以根据情况自己调节偏移量

rec.bottom -= 1;

rec.left += 1;

rec.top += 20;

rec.right -= 2;

 

//创建子页面

m_page1.Create(IDD_DIALOG1, GetDlgItem(IDC_TAB));

m_page2.Create(IDD_DIALOG2, GetDlgItem(IDC_TAB));

//将子页面移动到指定的位置

m_page1.MoveWindow(&rec);

m_page2.MoveWindow(&rec);

//显示子页面

m_page1.ShowWindow(SW_SHOW);

m_page2.ShowWindow(SW_HIDE);

//===============================================================

 

 

return TRUE; // return TRUE unless you set the focus to a control

}

 

5. 为主面板上的TabControl 控件添加 OnSelchangeTab事件,添加代码如下。

 

void CTabSampleDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)

{

// TODO: Add your control notification handler code here

    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;

    }

*pResult = 0;

}

原创粉丝点击