mfc tab控件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mfc tab控件相关的知识,希望对你有一定的参考价值。

问题是,【子页分别对应0,1,2.】,我点击相应的tab键,函数 m_tab.GetCurSel()(见代码)老是随机产生一个数,使得tab键和子页内容对应错误!!下面是代码,打下帮忙啊!!!!!!
BOOL Ccheckbuy::OnInitDialog()

CDialog::OnInitDialog();

// TODO: Add extra initialization here
m_tab.InsertItem(0,"直接购票");//添加参数一选项卡
m_tab.InsertItem(1,"车次查询"); //添加参数二选项卡
m_tab.InsertItem(2,"改签退票"); //添加结果选项卡

m_direcbuy.Create(IDD_DIALOG4,GetDlgItem(IDC_TAB));
m_cust.Create(IDD_DIALOG5,GetDlgItem(IDC_TAB));
m_chaxun2.Create(IDD_DIALOG6,GetDlgItem(IDC_TAB));
//获得IDC_TABTEST客户区大小
CRect rs;
m_tab.GetClientRect(&rs);
//调整子对话框在父窗口中的位置
rs.top+=30;
rs.bottom-=150;
rs.left+=20;
rs.right-=40;
//设置子对话框尺寸并移动到指定位置
m_direcbuy.MoveWindow(&rs);
m_cust.MoveWindow(&rs);
m_chaxun2.MoveWindow(&rs);
//分别设置隐藏和显示
m_direcbuy.ShowWindow(true);
m_cust.ShowWindow(false);
m_chaxun2.ShowWindow(false);
m_tab.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE


void Ccheckbuy::OnSelchangingTab(NMHDR* pNMHDR, LRESULT* pResult)

// TODO: Add your control notification handler code here
int CurSel = m_tab.GetCurSel();
switch(CurSel)

case 0:
m_direcbuy.ShowWindow(true);
m_cust.ShowWindow(false);
m_chaxun2.ShowWindow(false);
break;
case 1:
m_direcbuy.ShowWindow(false);
m_cust.ShowWindow(true);
m_chaxun2.ShowWindow(false);
break;
case 2:
m_direcbuy.ShowWindow(false);
m_cust.ShowWindow(false);
m_chaxun2.ShowWindow(true);
break;
default:
;

*pResult = 0;

怎么灭人回答?这么悲剧????

参考技术A 我的和你的一样,,也是两个窗口错开显示...正在找原因

MFC编程 | tab control控件的使用

因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询。
// tab control控件的使用

// 建立一个Cluster窗口,通过tab可以切换成C-Means和Fuzzy C-Means窗口 

 

1、插入对话框((ID:IDD_DIG_CLUSTER,删去默认生成的控件“OK”和“Cancel”后,插入一个tab control控件(ID:IDC_TAB)。通过类向导,给此对话框定义一个类CCluster,给tab控件定义变量m_tab。

2、插入另外两个对话框作为C-Means和Fuzzy C-Means的窗体,窗体属性中“Style”均设置为Child,“Border”设置为None,同样给这两个对话框分别定义类CCmeans和CFuzzyCMeans。

3、 在CCluster中添加类CCmeans和CFuzzyCMeans的头文件,定义m_cmeans和m_fcmeans对象和标志枚举flg。

CCmeans m_cmeans;

CFuzzyCMeas m_fcmeans;
enum{cmeans, fcmeans}flg;  // 标志位,日后可供使用

 4、重载类CCluster对应对话框的初始化函数OnInitDialog() ,添加如下代码即可

m_tab.InsertItem(0"C-Means");      // 插入第一个tab,显示C-Means
m_tab.InsertItem(1"Fuzzy C-Means");// 插入第二个tab,显示Fuzzy C-Means
m_cmeans.Create(IDD_DIG_CMEANS, GetDlgItem(IDC_TAB));  // 为m_cmeans和m_fcmeans产生对应的tab
m_fcmeans.Create(IDD_DIG_FUZZYC, GetDlgItem(IDC_TAB)); 
m_cmeans.ShowWindow(TRUE); // 显示m_cmeans页
m_fcmeans.ShowWindow(FALSE); // 关闭m_fcmeans页
m_tab.SetCurSel(0); // 设置默认的tab

 

5、编译、运行即可

 

 

个人经验分享,欢迎转载,转载请注明出处:

By IYL:http://www.cnblogs.com/YLDream/p/5616682.html 

如有失误,欢迎指正!

如果觉得不错,不妨“顶”一个或者“推荐”一番,这将是对我莫大的支持!

为了更好!

-YL

 

以上是关于mfc tab控件的主要内容,如果未能解决你的问题,请参考以下文章

MFC中TAB控件的编辑

MFC中TAB控件使用问题

在MFC中改变控件的TAB顺序

MFC编程 | tab control控件的使用

005 MFC 选卡控件TabCtrl 动画控件Animate

MFC中如何实现Tab控件里子对话框里的控件跟着对主话框伸缩而改变位置