MFC标签控件Tab
来源:互联网 发布:知乎ps实例教程 编辑:程序博客网 时间:2024/05/17 02:21
1.创建基于对话框的MFC
2.对话框添加入一个标签控件,ID为IDC_TAB1,成员变量:m_Tab,CTabCtrl类型
增加3个对话框IDD_DIALOGPAY,IDD_DIALOGSHIPPING,IDD_DIALOGUSER,都基于Dialog基类创建,即默认创建
并且每个对话框的属性为样式:下层,边框:无
添加如下图的对应对话框控件:
IDD_DIALOGUSER
IDD_DIALOGSHIPPING
IDD_DIALOGPAY
将第二个对话框的第一个“普通快递送货上门”单选按钮属性设置:√组[G]
将第三个对话框的第一个“货到付款”单选按钮属性设置为:√组[G]
然后设置这2个按钮的变量为int类型,变量名为m_nShippingType和m_nPayType
User对话框的编辑框属性分别为:m_strName,m_strPhone,m_strAddress,m_strEmail (都为CString类型)
3.
在主对话框的Dlg头文件中添加如下代码:
#include "DIALOGPAY.h"#include "DIALOGSHIPPING.h"#include "DIALOGUSER.h"
在主对话框Dlg类中定义公有成员:
CImageList m_ImageList; CDIALOGUSER m_DlgUser; CDIALOGSHIPPING m_DlgShipping; CDIALOGPAY m_DlgPay;
4.导入3个图标,用于显示标签项图标。
名字为:IDI_ICONUSER 、IDI_ICONSHIPPING 、IDI_ICONPAY
然后在Dlg的自定义函数中添加如下:
CMyLabelApp * pApp =(CMyLabelApp *)AfxGetApp(); m_ImageList.Create(16,16,ILC_COLOR16,3,0); m_ImageList.SetBkColor(RGB(255,255,255)); m_ImageList.Add(pApp->LoadIcon(IDI_ICONUSER)); m_ImageList.Add(pApp->LoadIcon(IDI_ICONSHIPPING)); m_ImageList.Add(pApp->LoadIcon(IDI_ICONPAY)); m_Tab.SetImageList(&m_ImageList); m_Tab.InsertItem(0,"会员信息",0);//前面的0表示该标签索引号,后面的0表示该标签的图标.后面同理 m_Tab.SetItemSize(200); m_Tab.InsertItem(1,"配送方式",1); m_Tab.SetItemSize(200); m_Tab.InsertItem(2,"付款方式",2); m_Tab.SetItemSize(200); //将3个对话框创建,并且附加到Tabcontrol中,不是很理解这个东东 m_DlgUser.Create(IDD_DIALOGUSER,GetDlgItem(IDC_TAB1)); m_DlgShipping.Create(IDD_DIALOGSHIPPING,GetDlgItem(IDC_TAB1)); m_DlgPay.Create(IDD_DIALOGPAY,GetDlgItem(IDC_TAB1)); //这下面的改变对话框的大小适应标签控件的大小其实是不存在的. CRect rect; m_Tab.GetClientRect(&rect);//获取Tabcontrol控件大小,为了使对话框能嵌入到里面 //改变对话框的大小来适合TabCtrol控件的大小,并且在TabCtrol控件中首先显示m_DlgUser的页面 m_DlgUser.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_SHOWWINDOW);//默认显示USER界面
5.利用标签消息TCN_SELCHANGE的消息映射函数改变标签框内的界面,TCN_SELCHANGE消息是在标签项被改变后发生。
//标签项改变当前选择后发生void CMyLabelDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here int nCurSel=m_Tab.GetCurSel();//获取用户选择的当前标签页 CRect rect; m_Tab.GetClientRect(&rect);//得到标签框控件的大小 switch(nCurSel) { //当用户选择标签1时,显示m_DlgUser,隐藏其他2个 case 0: m_DlgUser.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_SHOWWINDOW);//显示 m_DlgShipping.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_HIDEWINDOW);//隐藏 m_DlgPay.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_HIDEWINDOW);//隐藏 (后面同理) break; //选择标签2,显示m_DlgShipping case 1: m_DlgUser.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_HIDEWINDOW); m_DlgShipping.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_SHOWWINDOW); m_DlgPay.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_HIDEWINDOW); break; case 2: m_DlgUser.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_HIDEWINDOW); m_DlgShipping.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_HIDEWINDOW); m_DlgPay.SetWindowPos(NULL,10,20,rect.right-20,rect.bottom-40,SWP_SHOWWINDOW); break; } *pResult = 0;}
6.当用户设置好所有标签界面的内容后,按确定会出现报单界面:
void CMyLabelDlg::OnOK() { // TODO: Add extra validation here //获取用户设置数据 m_DlgUser.UpdateData(TRUE); m_DlgShipping.UpdateData(TRUE); m_DlgPay.UpdateData(TRUE); CString strMessage; strMessage.Format("姓名:%s,电话:%s,地址:%s,邮箱:%s",m_DlgUser.m_strName,m_DlgUser.m_strPhone, m_DlgUser.m_strAddress,m_DlgUser.m_strEmail); //设置为'组'属性的单选按钮能接受到在同一对话框内的其他单选按钮传递的消息。 switch(m_DlgShipping.m_nShippingType) { case 0:strMessage+="\n配送方式:普通快递送货上门";break; case 1:strMessage+="\n配送方式:加速快递送货上门";break; case 2:strMessage+="\n配送方式:普通邮递";break; case 3:strMessage+="\n配送方式:邮政特快专递";break; } switch(m_DlgPay.m_nPayType) { case 0:strMessage+="\n付款方式:货到付款";break; case 1:strMessage+="\n付款方式:邮局汇款";break; case 2:strMessage+="\n付款方式:网上支付";break; case 3:strMessage+="\n付款方式:银行转账";break; } MessageBox(strMessage,"信息确认",MB_OKCANCEL); CDialog::OnOK();}
阅读全文
0 0
- MFC标签控件Tab
- MFC之标签控件Tab Control
- MFC+控件Tab顺序
- MFC tab控件
- MFC Tab控件使用方法
- MFC tab控件
- MFC - Tab控件操作
- mfc tab控件使用
- MFC tab控件使用
- MFC---Tab控件
- 使用标签控件Tab
- 标签控件Tab
- MFC入门学习之控件(3)标签控件Tab Control的添加和使用
- VS2010/MFC编程入门之三十二(常用控件:标签控件Tab Control 上)
- VS2010/MFC编程入门之三十三(常用控件:标签控件Tab Control 下)
- VS2013/MFC编程入门之三十一(常用控件:标签控件Tab Control )
- MFC 之Tab控件使用
- mfc控件之Tab control
- 不同符号的值
- springmvc的执行流程
- 杭电1061 Rightmost Digit
- 托福口语
- 查找OpenCV里的函数源代码
- MFC标签控件Tab
- JAVA-GUI
- 如何用Mac+github pages +hexo搭建博客
- 谨慎地覆盖clone。
- git提交项目使用小指南
- 加号的运用
- Hadoop分布式集群搭建
- Program[03]-PygLatin
- Spring Data