编程论坛
注册
登录
编程论坛
→
VC++/MFC
在一个Tab控件中再添加一个Tab控件
小熊chx
发布于 2013-03-06 11:30, 347 次点击
有没有人试过在一个Tab控件下的一个页面中再添加一个Tab控件,要怎么实现呢
7 回复
#2
yuccn
2013-03-06 12:12
可以这样实现:
DlgA对话框中有TabA
BlgB对话框中有TabB
把DlgB作为DlgA的子对话框。由TabA来控制DlgB的显示和隐藏,这样就实现了TabA中 嵌套 TabB功能了
#3
小熊chx
2013-03-07 11:16
嗯,是可以,已经验证可行
#4
小熊chx
2013-03-07 13:34
在空白工程是验证可以实现,但是把这一功能添加到以前的工程出现一个问题:
子窗口中的Tab控件不能被显示出来,Tab控件区域什么都没有
#5
yuccn
2013-03-07 13:38
Tab控件 在对话框中,如果你没有插入几个标签 是看不到他的,你试试插入几个标签看看
#6
小熊chx
2013-03-07 13:39
已经插入了两个标签
#7
小熊chx
2013-03-07 13:43
m_LineUnitDlg.m_TAB_LineUnit.InsertItem(0, "标签1", 0);
m_LineUnitDlg.m_TAB_LineUnit.InsertItem(1, "标签2", 1);
//创建子窗口
m_LineUnitDlg.m_BreezeVibrationDlg.Create(IDD_BreezeVibration_DIALOG, &(m_LineUnitDlg.m_TAB_LineUnit));
m_LineUnitDlg.m_ConductorGallopDlg.Create(IDD_ConductorGallop_DIALOG, &(m_LineUnitDlg.m_TAB_LineUnit));
//设置母窗体
m_LineUnitDlg.m_BreezeVibrationDlg.SetParent(&(m_LineUnitDlg.m_TAB_LineUnit));
m_LineUnitDlg.m_ConductorGallopDlg.SetParent(&(m_LineUnitDlg.m_TAB_LineUnit));
CRect clientRC_LineUnitSonTab;
(m_LineUnitDlg.m_TAB_LineUnit).GetClientRect(clientRC_LineUnitSonTab);
clientRC_LineUnitSonTab.DeflateRect(0, 30, 0, 0);
m_LineUnitDlg.m_BreezeVibrationDlg.MoveWindow(clientRC_LineUnitSonTab);
m_LineUnitDlg.m_ConductorGallopDlg.MoveWindow(clientRC_LineUnitSonTab);
m_LineUnitDlg.m_BreezeVibrationDlg.ShowWindow(SW_SHOW);
(m_LineUnitDlg.m_TAB_LineUnit).SetCurSel(0);
这个是Tab标签下的子窗口中为子窗口的Tab控件添加标签
#8
yuccn
2013-03-07 16:41
拖一个tab空间到对话框中(自己调整好大小),再用GetDlgItem(Tab的ID) 这样方便点,不要用自己Create的,麻烦
比如定于对话框类的成员 CTabCtrl *m_TabCtrl
在InitDlg中用
m_TabCtrl = (CTabCtrl *)this->GetDlgItem(Tab控件的ID);
m_TabCtrl->InsertItem()
*****
1