VC++开发GIS系统(6)MFC TAB控件的使用

我之前的文章GIS开发系列文章《利用ADO技术实现SQL Server存储二进制数据》中我实现了ADO读取数据并且保存到数据库的功能,但是有朋友说进度有些快,还没弄明白ADO呢就二进制了,所以这个想写个示例具体介绍ADO的使用方法。

不过在写这个示例的过程中用到了MFC TAB控件,之前不怎么熟悉,这里记录一下。熟悉的朋友可以直接跳过本文了。

本文使用的是基于对话框的MFC程序写的,在本文的最后会给出所有的代码下载地址。

1. 添加TAB对话框

这一步跟其他控件的添加方法没有什么区别,选中TAB控件拖到指定位置即可;然后添加一个控制的变量,如:

CTabCtrl mTab;

2. 设置tab的选项卡

在OnInitDialog函数中添加tab的选项卡,示例代码如下:

mTab.InsertItem(0,_T("增"));
mTab.InsertItem(1,_T("删"));
mTab.InsertItem(2,_T("查"));
mTab.InsertItem(3,_T("改"));

3. 画对话框

切换到资源管理器,分别画4个对应第2步中的对话框。为了美观可以将style设为Child, Border设为None。如图:

画完对话框后,记得为每个对话框新建一个类。

4. 添加对话框变量

在步骤1的代码下添加如下代码(示例),记得要添加步骤中生成的3个类的头文件。

CTabCtrl mTab;
CTabDlgAdd mDlgAdd;
CTabDlgMus mDlgMus;
CTabDlgSEA mDlgSea;
CTabDlgMod mDlgMod;
//控制对话框显示的变量
int currentTab;
CDialog *PDlg[4];

上面的代码中最后两个变量是用来控制对话的显示的,会在后面的代码中用到。

5. 创建对话框

在OnInitDialog中创建这4个对话框,代码如下

mDlgAdd.Create(IDD_DIALOG_ADD,GetDlgItem(IDC_TAB_ADO));
mDlgMus.Create(IDD_DIALOG_MUS,GetDlgItem(IDC_TAB_ADO));
mDlgSea.Create(IDD_DIALOG_SEA,GetDlgItem(IDC_TAB_ADO));
mDlgMod.Create(IDD_DIALOG_MOD,GetDlgItem(IDC_TAB_ADO));

并且这里要设置初始显示的对话框,只能显示一个,其他3个隐藏。代码如下:

PDlg[0] = &mDlgAdd;
PDlg[1] = &mDlgMus;
PDlg[2] = &mDlgSea;
PDlg[3] = &mDlgMod;
PDlg[0]->ShowWindow(SW_SHOW);
PDlg[1]->ShowWindow(SW_HIDE);
PDlg[2]->ShowWindow(SW_HIDE);
PDlg[3]->ShowWindow(SW_HIDE);
//设置默认tab
mTab.SetCurSel(0);
currentTab = 0;

6. TAB和对话框响应联动

响应TAB的TcnSelchanging命令,添加函数。如图:

在响应函数中添加下面的代码:

//把当前的页面隐藏起来
PDlg[currentTab]->ShowWindow(SW_HIDE);
//得到新的页面索引
currentTab = mTab.GetCurSel();
//把新的页面显示出来
PDlg[currentTab]->ShowWindow(SW_SHOW);
*pResult = 0;

7. 其他内容

其他的一个问题就是美化的事情,比如对话框能否完全显示,下面是一段示例代码,用来控制对话框的显示。

//设置显示范围
CRect rc;
mTab.GetClientRect(rc);
rc.top += 20;
rc.bottom -= 0;
rc.left += 0;
rc.right -= 0;
mDlgAdd.MoveWindow(&rc);
mDlgMus.MoveWindow(&rc);
mDlgSea.MoveWindow(&rc);
mDlgMod.MoveWindow(&rc);

8. 本文示例代码

如有不理解的,可以下载本文的源代码,所用环境VS2010。

链接:http://pan.baidu.com/s/1pJqeOOV

密码:spcv

GPS原理应用(4)美国政府的GPS限制政策 解决MapGIS 67中影像输出后有黑边或背景为黑色

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论