【vc++精品源码栏目提醒】:以下是网学会员为您推荐的vc++精品源码-vc6.0_tab控件的使用 - 其它资料,希望本篇文章对您学习有所帮助。
vc6.0 tab 控件的使用MFC 中使用 TAB Control 控件(转) View 是 Form View, 假如我现在有个 SDI 程序, 想在上面放个 Tab Control,包含两个 Page。
现在让我们来看看应该怎样处理。
首先当然要增加一个 Tab Control 资源, 在 然后利用 Class Wizard, View 中增加一个 Control变量。
接着建立两个对话框资源,别忘了把 Style 改为 Child,Border 改为 None。
然后就可以在上面加其他控件了。
接着利用 Class Wizard,分别为这两个对话框建立两个类,比如 CPage1 和 CPage2。
然后在 View 类头文件中,加入这两个对话框对象。
同时增加一个变量 int m_CurSelTab,用了表明是哪个 Page 即将被切换。
为了避免用户在切换 Tab 时,程序对 Tab Index 的枚举,可以利用数组来做这个事情。
在 View 的初始化函数中需要把 CPage1、CPage2 和 Tab Control 关联起来,并保存页面地址,设置初始页面,等等。
void CTab_testView::OnInitialUpdate CFormView::OnInitialUpdate GetParentFrame-RecalcLayout ResizeParentToFit //为 Tab Control 增加两个页面 m_tab.InsertItem0 _TFirst m_tab.InsertItem1 _TSecond //创建两个对话框 m_page1.CreateIDD_DIALOG1 m_tab m_page2.CreateIDD_DIALOG2 m_tab //设定在 Tab 内显示的范围 CRect rc m_tab.GetClientRectrc rc.top 20 rc.bottom - 8 rc.left 8 rc.right - 8 m_page1.MoveWindowrc m_page2.MoveWindowrc //把对话框对象指针保存起来 pDialog0 m_page1 pDialog1 m_page2 //显示初始页面 pDialog0-ShowWindowSW_SHOW pDialog1-ShowWindowSW_HIDE //保存当前选择 m_CurSelTab 0这里面需要注意的是,我用了一个 CDialog 指针数组来进行保存,数组的大小是 Tab Control页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。
用户切换时,需要响应相关的消息。
void CTab_testView::OnSelchangeTab1NMHDR pNMHDR LRESULT pResult// TODO: Add your control notification handler code here pDialogm_CurSelTab-ShowWindowSW_HIDE m_CurSelTab m_tab.GetCurSel pDialogm_CurSelTab-ShowWindowSW_SHOWpResult 0首先我们先把当前的页面隐藏起来,然后得到新的页面索引,最后就把相关页面显示出来即可。
这比一个个去枚举简单多了。
还有一点比较有意思,那就是 DDX/DDV 机制的运用。
要想获得 Tab Control 各个页面的数据,可以利用 DDX/DDV 机制,但需要注意,因为这是多个页面,所以需要显式调用多次。
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 AfxMessageBoxstr1 AfxMessageBoxstr2经过这几步处理,基本上我们就可以利用 Tab Control 的强大功能了。
===================================VC 之 TAB 控件实例对于用惯了 VB 和 VC的我来说,VC 控件真是太麻烦了,不过有什么办法呢?许多企业还在使用,所以继续学习,咸淡算扯到这了,这里做了个最为简单的 Tab Control 的使用范例。
1. 在主面板上拖放一 Tab Control 控件,我们这里建立其在主面板类(CTabSampleDlg)里面的成员变量 m_tab。
2.添加两个子对话框,将其属性设置为“child,none”。
这里要注意了,添加的必须是继承自DIALOG 类的对话框,而不是 PropPage 对话框,否则的话,子面板将不能响应用户操作。
然后生成两个新类“CTabPage1, CTabPage2”。
3.为 CTabSampleDlg 类 添加两个成员变量,他们分别是 CTabPage1 和 CTabPage2 类的实例。
4.在 CTabSampleDlg 类的 OnInitDialog 成员函数内的适当位置添加如下代码。
BOOL CTabSampleDlg::OnInitDialogCDialog::OnInitDialog// Add About... menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERTIDM_ABOUTBOX 0xFF