2、创建若干个对话框资源作为标签页控件的标签。
修改两个属性:
Border: none // 边界为空,这样它就没了标题栏
Style: Child // 这个模板就可以当作另一个窗口的子窗口了在对话框的初始化函数
3,在对话框的初始化函数OnInitDialog中, 添加初始化标签页控件的代码
3.1) // 添加标签页,并设定标签名
m_tabctrl.InsertItem(0, _T("XXX"))
m_tabctrl.InsertItem(1, _T("XXX"))
m_tabctrl.InsertItem(2, _T("XXX"))
m_tabctrl.InsertItem(3, _T("XXX"))
3.2) // new若干个对话框对象,为并其添加之前定义的对话框模板,设定其父窗口为m_tabctrl
// new CDialog 对象
m_pDlgArray[0] = new CBookInfo
m_pDlgArray[1] = new CReaderInfo
m_pDlgArray[2] = new CBorrowInfo
m_pDlgArray[3] = new CManagerInfo
3.3) // 为CDialog对象添加对话框模板
m_pDlgArray[0]->Create(IDD_BOOK_INFO, &m_tabctrl)
m_pDlgArray[1]->Create(IDD_READER_INFO, &m_tabctrl)
m_pDlgArray[2]->Create(IDD_BORROW_INFO, &m_tabctrl)
m_pDlgArray[3]->Create(IDD_MANAGER_INFO, &m_tabctrl)
3.4) // 设置对话框在标签控件中的位置
CRect rc
m_tabctrl.GetClientRect(&rc)
rc.top += 20
rc.left += 5
rc.bottom -= 5
rc.right -= 5
m_pDlgArray[0]->MoveWindow(&rc)
m_pDlgArray[1]->MoveWindow(&rc)
m_pDlgArray[2]->MoveWindow(&rc)
m_pDlgArray[3]->MoveWindow(&rc)
3.5) // 设置缺省标签页
m_pDlgArray[m_nCurSel]->ShowWindow(SW_SHOW)
m_Tab.SetCurSel(m_nCurSel)
4.为标签控件添加TCN_SELECHANGE消息的响应函数
void CLibraryMSDlg::OnTcnSelchangeTab(NMHDR *PNMHDR, LRESULT *pResult)
{
int nNewSel = m_tabctrl.GetCurSel()
if (m_nCurSel != nNewSel)
{
m_pDlgArray[m_nCurSel]->ShowWindow(SW_HIDE)
m_pDlgArray[nNewSel]->ShowWindow(SW_SHOW)
m_nCurSel = nNewSel
}
return
}
将窗口边框去掉,将窗口类和资源拷贝到新的工程(带标签页)中。在新工程的主窗口中,有多少个标签就申请多少个CDialog*指针(每一个指针可以对应原来每个项目的主窗口),在主窗口的初始化函数中,将每个窗口用Create函数创建出来,调用ShowWindow(SW_HIDE),只有第一个标签设置为SW_SHOW。
你可以给我两个项目,我来帮你整合一下,你按照我的方法处理剩下的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)