Tab Control的一个运用
来源:互联网 发布:mysql in 和exists 编辑:程序博客网 时间:2024/05/18 03:22
Windows 窗体 TabControl 显示多个选项卡,这些选项卡类似于笔记本中的分隔卡和档案柜文件夹中的标签。选项卡中可包含图片和其他控件,使用TabControl 创建属性页。好了既然知道了它是什么样的以及可以做什么,那我们就去一瞧它的庐山真面目吧
1),首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个control类型变量,得到 CTabCtrl m_CTable;
2),创建三个新的对话框资源,其属性作如下修改:Border:none 边界为空,这样它就没了标题栏 Style :Child 这样这个模板就可以当作另一个窗口的子窗口了。
完成后从这三个对话框模板生成三个新的对话框类,他们分别是CDialog1,CDialog2,CDialog3.
3),在主对话框中为新添加进来的两个类增加三个变量,代码如下:
CDialog1 dlg1;CDialog2 dlg2;CDialog3 dlg3;
4),在3个子对话框上分别添加一个Edit控件,分别修改第2,3个对话框上Edit的ID,修改为IDC_EDIT2,IDC_EDIT3,接着再分别为3个Edit控件关联一个int型的变量 分别为:int m_Dlg1,int m_Dlg2,int m_Dlg3;5),准备工作做得差不多了,下面我们进行初始化,在OnInitDialog()函数中添加以下代码:
//初始化属性页m_CTable.InsertItem(0,_T("叶一"));m_CTable.InsertItem(1,_T("叶二"));m_CTable.InsertItem(2,_T("叶三"));//将新添加的3个Dlg资源和Tab关联起来dlg1.Create(IDD_DIALOG1, &m_CTable);dlg2.Create(IDD_DIALOG2, &m_CTable);dlg3.Create(IDD_DIALOG3, &m_CTable);//获得IDC_TAB1的客户区大小 CRect rect; m_CTable.GetClientRect(&rect);rect.right -= 10;rect.bottom += 20;//将指定点,或者矩形的用户坐标转换成屏幕坐标ClientToScreen(rect);dlg1.MoveWindow(rect);dlg2.MoveWindow(rect);dlg3.MoveWindow(rect);dlg1.ShowWindow(SW_SHOW);dlg2.ShowWindow(SW_HIDE);dlg3.ShowWindow(SW_HIDE);//设置默认选项卡m_CTable.SetCurSel(0);
6), 为Dialog1类添加成员函数int GetValue() 代码如下:为Dialog1添加以下函数:
int CDialog1::GetValue(){return m_Dlg1;}int CDialog2::GetValue(){return m_Dlg2;}int CDialog3::GetParValue(int rest){ m_Dlg3 = rest;return rest;
7),为了切换页面,我们得为Tab 控件 响应TCN_SELCHANGES事件,添加函数OnTcnSelchangeTab1,我们得到如下函数代码:void CSixDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult){// TODO: Add your control notification handler code hereint CurSel = m_CTable.GetCurSel();switch(CurSel){case 0:dlg1.ShowWindow(true);dlg2.ShowWindow(false);dlg3.ShowWindow(false);break;case 1:dlg1.ShowWindow(false);dlg2.ShowWindow(true);dlg3.ShowWindow(false);break;case 2:dlg1.ShowWindow(false);dlg2.ShowWindow(false);dlg3.ShowWindow(true);break;default:;}*pResult = 0;}
8),我们在主对话框上添加个Button按钮,实现叶一和叶二的数相加,这里用到了DDX/DDV机制(DDX_Text(pDX,IDC_EDIT1,m_Dlg1);),得到如下:void CSixDlg::OnBnClickedButton1(){dlg1.UpdateData(true);dlg2.UpdateData(true);dlg3.SetParValue(dlg1.GetParValue()+dlg2.GetParValue());dlg3.UpdateData(false); }
最终实现如图:
- Tab Control的一个运用
- Tab Control 的使用
- Tab Control的使用
- TAB Control控件 的使用方法
- Tab Control控件的使用
- MFC Tab Control 的用法
- TAB Control控件 的使用方法。
- Tab control
- tab control
- TAB Control
- tab control
- Tab Control
- Tab Control控件使用的例子
- Tab Control控件使用的例子
- 使用Tab Control 控件的例子
- Tab Control控件使用的例子
- VC++ Tab Control控件的使用
- Tab Control控件使用的例子(网摘)
- 利用ffmpeg来进行视频解码的完整示例代码(H.264)
- s3c2410看门狗与字符设备、混杂设备和平台设备
- 使用Dojo的Ajax应用开发进阶
- 且看汉末社会风习
- 这段时间发生的事情
- Tab Control的一个运用
- Android腾讯微薄客户端开发十四:首页menu菜单
- OCILIB实例
- codeword-layer-rank-antenna port
- RMFF
- 东汉中兴在于求贤于普通民众
- Button 使用Reskey
- 总结我这几年郑州的生活
- 直接抛出异常就用throw,在类和方法后面用throws