如何利用tab ctrl控件?

wanglaosan 2003-10-20 09:11:51
我想用一个tab控件,不同的标签上显示不同的控件,请问怎么实现?
...全文
145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglaosan 2003-10-23
  • 打赏
  • 举报
回复
朵多多多多多谢了,我先测试一下
BinaryPoet 2003-10-22
  • 打赏
  • 举报
回复
是这样的,TabCtrl严格的来说只是一个占位控件,并不建议从上面摞对话框,一般的做法如下:
1.创建若干个对话框资源,最好是无边框的,但一定要保证资源选择的是Child类型;
2.为每个对话框创建一个类;
3.在你准备使用TabCtrl的那个对话框中为TabCtrl添加一个成员变(以下用m_tab表示);
4.同时在主对话框类中增加若干个子对话框类的实例,例如:CDialog1 m_dlg1,CDialog2 m_dlg2(好了,就拿两个子对话框作例子);
5.在主对话框的InitDialog函数中添加如下语句:
m_tab.InsertItem(0,_T("Item1"));
m_tab.InsertItem(1,_T("Item2"));
m_dlg1.Create(IDD_DIALOG1,this->m_hWnd); //IDD_DIALOG1是CDialog1的资源ID;
m_dlg2.Create(IDD_DIALOG2,this->m_hWnd);
m_dlg1.ShowWindow(SW_SHOW);
m_dlg2.ShowWindow(SW_HIDE);
好了,到了这一步,所有的准备工作都做好了——你的tabctrl具有了两个选项页,你同时拥有了两个非模态的对话框,但是有个大问题——怎样控制你的自对话框的位置呢?别急,继续!
6.再次打开资源编辑器,拖一个PictrueBox控件或者Static控件(其默认ID是IDC_STATIC)到你的TabCtrl上,更改它的ID(这里就叫IDC_RECT好了),设置它的位置以及大小至你希望你的自对话框显示的位置。同时在我们刚刚写好的代码m_dlg1.ShowWindow(...)之前添加如下语句:
CRect rect;
GetDlgItem(IDC_RECT)->GetWindowRect(&rect);
ScreenToClient(&rect);
m_dlg1.MoveWindow(&rect);
m_dlg2.MoveWindow(&rect);
这样,位置就固定好了
7.接下来,完成最重要的工作,决定如何根据选择来显示/隐藏那个对话框:
利用ClassWizard,给你主对话框的TabCtrl控件的TCN_SELCHANGING消息和TCN_SELCHANGE消息分别增加两个消息相应函数内容如下:
//OnChanging
{
int nSel = m_tab.GetCurSel();
switch(nSel)
{
case 0:
{
m_dlg1.ShowWindow(SW_HIDE);
break;
}
case 1:
{
m_dlg2.ShowWindow(SW_HIDE);
break;
}
}
}
//OnChange
{
int nSel = m_tab.GetCurSel();
switch(nSel)
{
case 0:
{
m_dlg1.ShowWindow(SW_SHOW);
break;
}
case 1:
{
m_dlg2.ShowWindow(SW_SHOW);
break;
}
}
}
8.测试一下!
wanglaosan 2003-10-22
  • 打赏
  • 举报
回复
怎么把对话框与TAB控件连在一起呀,是把对话框摞在TAB控件上吗,每个对话框都要创建一个对话框类吗?请详细的硕一下好吗,谢谢了
wuxfBrave 2003-10-21
  • 打赏
  • 举报
回复
创建多个字对话框,选择不同的tab页,显示不同的对话框

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧