CTabCtrl在配置对话框中的应用
来源:互联网 发布:麻将教程新手入门软件 编辑:程序博客网 时间:2024/06/11 11:27
源程序在:http://download.csdn.net/detail/dijkstar/5188163 下载;
经常会碰到很多个配置变量,一个页面上放不下,或者不相关的另一些配置内容,需要把它们放在不同的页面上,最后点击【OK】(或保存),保存到配置文件中去,这样的界面和逻辑是如何实现的呢?
如上图中, 选取了三个配置界面,每个配置界面上有一些编辑框、下拉框、单选框或者复选框,【确定】按钮是用来做最后保存用的;
① 首先创建三个CDialog的对话框资源,每个资源的style为child类型,并且去掉工具栏和系统菜单;
② 在主对话框的OnInitDialog中:
//// 创建TabCtrl上的文字显示//m_TabCtrl.InsertItem(0, "配置1");m_TabCtrl.InsertItem(1, "配置2");m_TabCtrl.InsertItem(2, "配置3");//// 为TabCtrl关联每一个Dialog//m_Dlg1.Create(CDlg1::IDD, &m_TabCtrl);m_Dlg2.Create(CDlg2::IDD, &m_TabCtrl);m_Dlg3.Create(CDlg3::IDD, &m_TabCtrl);//// 调整每个Dialog的显示位置,使其在TabCtrl控件中,最后显示第一个页面//CRect rect;m_TabCtrl.GetClientRect(&rect);m_Dlg1.MoveWindow(rect.left + 10, rect.top + 30, rect.Width() - 20, rect.Height()-40, FALSE);m_Dlg2.MoveWindow(rect.left + 10, rect.top + 30, rect.Width() - 20, rect.Height()-40, FALSE);m_Dlg3.MoveWindow(rect.left + 10, rect.top + 30, rect.Width() - 20, rect.Height()-40, FALSE);m_Dlg1.ShowWindow(SW_SHOW);
③ 处理CTabCtrl单击切换事件:
void CTestDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) {int n = m_TabCtrl.GetCurSel();if (n == 0){m_Dlg1.ShowWindow(SW_SHOW);m_Dlg2.ShowWindow(SW_HIDE);m_Dlg3.ShowWindow(SW_HIDE);}else if (n == 1){m_Dlg1.ShowWindow(SW_HIDE);m_Dlg2.ShowWindow(SW_SHOW);m_Dlg3.ShowWindow(SW_HIDE);}else if (n == 2){m_Dlg1.ShowWindow(SW_HIDE);m_Dlg2.ShowWindow(SW_HIDE);m_Dlg3.ShowWindow(SW_SHOW);}*pResult = 0;}
这样做以后,就可以显示(切换)出三个配置界面了,下面再来关联配置变量,在stdafx.h中声明一个结构体:
typedef struct {BOOL bSetup;CString strname;CString strNo;BOOL bListen;}MY_TYPE;用它来定义一个变量,用来保存配置的全局数据结构,假设为 g_myObj;
在每一个的配置对话框的DoDataExchange中完成数据交换,这些要自己手动输入,例如配置界面3的为:
void CDlg3::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDlg3)// NOTE: the ClassWizard will add DDX and DDV calls here//}}AFX_DATA_MAPextern MY_TYPE g_myObj;DDX_Check(pDX, IDC_CHECK2, g_myObj.bListen);//【DDX_】开头的自己在MSDN索引栏里自己查,有很多DDX_Text(pDX, IDC_EDIT1, g_myObj.strNo);}
void CTestDlg::OnOK() {// TODO: Add extra validation here//// 取出每一个界面上的控件值,到关联的变量//m_Dlg1.UpdateData();//默认会调用每个配置对话框的 DoDataExchangem_Dlg2.UpdateData();m_Dlg3.UpdateData();//// 最后测试(显示)取出界面上的数据是否正确?//CString str, tmp;tmp.Format("%d ", (int)g_myObj.bListen);str += tmp;tmp.Format("%d ", (int)g_myObj.bSetup);str += tmp;str += g_myObj.strname;str += g_myObj.strNo;AfxMessageBox(str);}
- CTabCtrl在配置对话框中的应用
- 利用CTabCtrl控件在一个对话框切换多个其他的对话框
- MFC控件应用--CTabCtrl
- confirm对话框在WebForm流程控制中的应用
- OpenGL在MFC对话框中的配置与开发
- CTabCtrl
- ctabctrl
- ctabctrl
- CTabCtrl
- ctabctrl
- CTabCtrl
- CTabCtrl
- CTabCtrl
- Vlan在园区网中的应用,配置
- jacob在java系统中的应用配置
- JNDI在tomcat中的应用:配置数据源
- spring在web应用中的配置
- Spring在Web应用中的配置
- 关于Hash分区的思考
- ios7以上的二维码扫描
- js 或(||)/与(&&) 语句的介绍
- ios UITextField的总结
- 使用autoLayout实现适配iPhone5
- CTabCtrl在配置对话框中的应用
- 关闭/刷新 当前页面 时触发的js函数
- 动态口令与数字证书简介
- tslib-1.4移植记录
- [Win8]Windows8开发笔记(四):画刷介绍以及如何实现实现歌词动态变色显示
- An unexpected token\"BEGIN-OF-STATEMENT".\Expected tokens may include: "<space>"
- 小记~powershell 查看移动的网站集的大小
- [Solver] SPOJ FINFRAC
- linux上安装了qt-sdk-linux-x86-opensource-2010.05.1