vc的tab控件使用

上传人:宝路 文档编号:2777644 上传时间:2017-07-27 格式:DOC 页数:11 大小:77KB
返回 下载 相关 举报
vc的tab控件使用_第1页
第1页 / 共11页
vc的tab控件使用_第2页
第2页 / 共11页
vc的tab控件使用_第3页
第3页 / 共11页
vc的tab控件使用_第4页
第4页 / 共11页
vc的tab控件使用_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《vc的tab控件使用》由会员分享,可在线阅读,更多相关《vc的tab控件使用(11页珍藏版)》请在金锄头文库上搜索。

1、vc 的 tab 控件使用 VC 中使用 TAB Control 控件假如我现在有个SDI 程序,View是 Form View,想在上面放个 Tab Control,包含两个 Page。现在 让我们来看 看应该怎样处理。首先当然要增加一个 Tab Control资源,然后利用 Class Wizard,在 View中增加一个Control 变量。接着建立两个对话框资源,别忘了把 Style 改为Child,Border 改为 None。然后就可以在上面加其他控件了。接着利用Class Wiza rd,分别为这两个对话框建立两个类,比如CPage1 和CPage2。然后在 View 类头文件中

2、,加入这两个对话框对象。同时增加一个变量 int m_CurSelTab,用了表明是哪个 Page即将被切换。为了避免用户在切换 Tab时,程序对Tab Index 的枚举,可以利用数组来做这个事情。在 View 的初 始化函数中需要把 CPage1、CPage 2 和 Tab Control 关联起来,并保存页面地址,设置初始页面,等等。void CTab_testView:OnInitialUpdate()CFormView:OnInitialUpdate();GetParent()-RecalcLayout();ResizeParentToFit();/为 Tab Control增加两个

3、页面m_tab.InsertItem(0, _T(First);m_tab.InsertItem(1, _T(Second);/创建两个对话框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 -= 8; rc.left += 8;rc.right -= 8;m_page1.MoveWindow(&rc);m_page2.MoveWindow(&rc);/把对话框

4、对象指针保存起来pDialog0 = &m_page1;pDialog1 = &m_page2;/显示初始页面pDialog0-ShowWindow(SW_SHOW);pDialog1-ShowWindow(SW_HIDE);/保存当前选择m_CurSelTab = 0;这里面需要注意的是,我用了一个 CDialog 指针数组来进行保存,数组的大小是Tab Control 页面 的个数,数组下标对应着每个页面的索引(这样方便快速存取)。用户切换时,需要响应相关的消息。void CTab_testView:OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResu

5、lt) / TODO: Add your control notification handler code herepDialogm_CurSelTab-ShowWindow(SW_HIDE);m_CurSelTab = m_tab.GetCurSel();pDialogm_CurSelTab-ShowWindow(SW_SHOW);*pResult = 0;首先我们先把当前的页面隐藏起来,然后得到新的页面索引,最后就把相关页面显示出来即可。这比一个个去枚举简单多了。还有一点比较有意思,那就是DDX/DDV 机制的运用。要想 获得 Tab Control 各个页面的数据,可以利用DDX/DD

6、V 机制,但需要注意 ,因为这是多个页面,所以需要显式调用多次。void CTab_testView:OnButton1() / TODO: Add your control notification handler code here m_page1.UpdateData();m_page2.UpdateData();CString str1 = m_page1.m_str1;CString str2 = m_page2.m_str2;AfxMessageBox(str1);AfxMessageBox(str2);经过这几步处理,基本上我们就可以利用 Tab Control的强大功能了。VC

7、 之 TAB 控件实例对于用惯了 VB 和 VC#的我来说,VC 控件真是太麻烦了,不过有什么办法呢?许多企业还在使用,所以继续学习,咸淡算扯到这了,这里做了个最为简单的 Tab Control 的使用范例。1. 在主面板上拖放一Tab Control 控件,我们这里建立其在主面板类(CTabSampleDlg )里面的成 员变量 m_tab。2.添加两个子对话框,将其属性设置为“child,none”。这里要注意了,添加的必须是继承自 DIALOG 类的对话框, 而不是 PropPage 对话框,否则的话,子面板将不能响应用户操作。然后生成两个新类“CTabPage1, CTabPage2”

8、。3.为 CTabSampleDlg 类 添 加两个成员变量,他们分别是 CTabPage1 和 CTabPage2类的实例。4.在 CTabSampleDlg类的 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_ABOUT

9、BOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The work does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small i

10、con/=/初始化TABTCITEM 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.rig

11、ht -= 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 contro

12、l5. 为主面板上的 TabControl 控件添加 OnSelchang eTab 事件, 添加代码如下。void CTabSampleDlg:OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereswitch (m_tab.GetCurSel()case 0:m_page1.ShowWindow(SW_SHOW);m_page2.ShowWindow(SW_HIDE);break;case 1:m_page1.ShowWindow(SW_H

13、IDE);m_page2.ShowWindow(SW_SHOW);break;default:break;*pResult = 0;Tab Control 控件的 应用前几天在网上搜了点资料,是关于 Tab Control控件的应用,当时还做了一遍,今天再做有点生疏了,总是忘了点什么。于是总结在这儿,一是为以后使用提供方便,再是供大家参考。首先,新建一个基于对话框的MFC 应用程序,添加 Tab Control 控件,并为其添加变量 CTabCtrl m_tab;然后,新建两个对话框,均设置属性如下(这步很重要):S tyle-Child,Border-None;然后分别添 加一个文本框。分别

14、为这两个对话框建立新类 CPage1 和 CPage2。该程序用了一个CDialog 的指针数组来进行保存各个页面,数组的大小是 Tab Control 页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。 声明变量:CDialog *pDial og2,并且添加一个 int型变量用于保存当前活动的页面索引,int m_CurSelTab ;接着,在 OnInitDialog 函数中添 加如下代码:/为Tab Control 增加两个页面m_tab.InsertItem(0, _T(First);m_tab.InsertItem(1, _T(Second);/创建两个对话框m_pag

15、e1.Create(IDD_DIALOG1, &m_tab);m_page2.Create(IDD_DIALOG2, &m_tab);/设定在 Tab内显示的范围CRect rc;m_tab.GetClientRect(rc);rc.top += 20;rc.bottom -= 8;rc.left += 8;rc.right -= 8;m_page1.MoveWindow(&rc);m_page2.MoveWindow(&rc);/用数组把对话框对象指针保存起来pDialog0 = &m_page1;pDialog1 = &m_page2;/显示初始页面pDialog0-ShowWindow(SW_SHOW);pDialog1-ShowWindow(SW_HIDE);/保存当前选择m_CurSelTab = 0;这样就可进行正常的显示了,如果响应页面切换这个事件,可以为 Tab Control控件添加消息响应函数:OnSelchan geTab,并在该函数中添加如下代码:/得到页面的数据CString str;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号