在网上关于tab control控件的讲解都是vc6.0并且是基于对话框的我用08的直接在应用上!
但是我也按他们说的做了!效果没出来挺悲剧的!也就是最好几步是这样的:最后是要求 为Tab Control添加消息处理程序void CTab_testView::OnInitialUpdate()函数问题是添加这个函数时 、他直接出现在Tab control 的模板的文件中、我引用其他文件的变量就引用不到;还有就是Tab control 对话框的上边你不给他添加类文件 、上边是没有消息处理的;你要是想把oid CTab_testView::OnInitialUpdate()视图类中 就添加不进去;
或者说你们谁有08的 tab control控件的使用方法;
不是单独建立对话框模式的那中、在SDI单文档程序里面的那中;
你们若是要代码我也不知道发 那一部分;
都是系统自己生成的;我也就是分割了下
不知道说清楚了没;
帮帮忙!谢谢
我刚搞MFC!
但是我也按他们说的做了!效果没出来挺悲剧的!也就是最好几步是这样的:最后是要求 为Tab Control添加消息处理程序void CTab_testView::OnInitialUpdate()函数问题是添加这个函数时 、他直接出现在Tab control 的模板的文件中、我引用其他文件的变量就引用不到;还有就是Tab control 对话框的上边你不给他添加类文件 、上边是没有消息处理的;你要是想把oid CTab_testView::OnInitialUpdate()视图类中 就添加不进去;
或者说你们谁有08的 tab control控件的使用方法;
不是单独建立对话框模式的那中、在SDI单文档程序里面的那中;
你们若是要代码我也不知道发 那一部分;
都是系统自己生成的;我也就是分割了下
不知道说清楚了没;
帮帮忙!谢谢
我刚搞MFC!
你们觉得他说起清楚 了吗!
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//为Tab Control增加两个页面
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); //把对话框对象指针保存起来
pDialog[0] = &m_page1;
pDialog[1] = &m_page2; //显示初始页面
pDialog[0]->ShowWindow(SW_SHOW);
pDialog[1]->ShowWindow(SW_HIDE); //保存当前选择
m_CurSelTab = 0;
}这里面需要注意的是,我用了一个CDialog指针数组来进行保存,数组的大小是Tab Control页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。用户切换时,需要响应相关的消息。void CTab_testView::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
m_CurSelTab = m_tab.GetCurSel();
pDialog[m_CurSelTab]->ShowWindow(SW_SHOW); *pResult = 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;
AfxMessageBox(str1);
AfxMessageBox(str2);
}