MFC TAD Control 控件的使用

在一些程序中,往往是需要在一个窗体中提供一些选项让用户选择,然后根据用户的选择对窗体的局部显示内容进行切换。这就需要用到MFC提供的 TAD Control 控件。该控件的原理是通过用户对于控件选项的选择来显示事先定义好的不同的子窗体。也就是说除了 TAB Control 控件所在的窗体外,我们还需要分别的去定义选项所对应的子窗体来供用户选择。OK,废话不多说,下面是具体的操作过程:

1.在工具箱中选择 TAD Control 控件并拖入到窗体中

2.右键为控件添加一个变量为:tabctrl

3.创建三个等会要用到的窗体,将窗体属性中的Style改为Child,Border改为None,并为这三个窗体绑定窗体类,然后将三个窗体类的文件头包含进 TAB Control 控件所在的窗体类中,如下:

#include "NetWorkDlg.h"
#include "WlanDlg.h"
#include "VideoDlg.h"

4.在 TAB Control 控件所在的窗体类中声明三个窗体类的对象,并声明一个CDialogEx类型指针数组,一个int类型变量如下

CDialogEx* pDialog[3];//用来保存对话框对象指针数组,可以方便之后的调用,在窗体多的时候效率高很多
NetWorkDlg networkobj;//tab子窗体
WlanDlg wlanobj;//tab子窗体
VideoDlg videoobj;//tab子窗体
int m_CurSelTab;//记录当前选中的子窗体
5. TAB Control 控件所在的窗体类的初始化函数中进行如下操作:

//创建对话框
networkobj.Create(IDD_DIALOG_NETWORK, &tabctrl);
wlanobj.Create(IDD_DIALOG_WLAN, &tabctrl);
videoobj.Create(IDD_DIALOG_VIDEO, &tabctrl);
//保存对话框的指针方便之后调用
pDialog[0] = &networkobj;
pDialog[1] = &wlanobj;
pDialog[2] = &videoobj;
//添加TAB Control选项
tabctrl.InsertItem(0, _T("网络参数"));
tabctrl.InsertItem(1, _T("视频参数"));
tabctrl.InsertItem(2, _T("WiFi设置"));
CRect rect;//得到tab位置,以设定在Tab内显示的范围,如果希望让TAB Control控件的选项在一侧,可修改控件的Vertical属性,修改之后rect的位置需要调整,本代码是将Vertical属性设置为True的情况的
tabctrl.GetClientRect(&rect);
rect.top += 10;
rect.bottom -= 10;
rect.left += 30;
rect.right -= 10;
//将创建的字窗体移动到TAB Control的显示框内 
pDialog[0]->MoveWindow(&rect);
pDialog[1]->MoveWindow(&rect);
pDialog[2]->MoveWindow(&rect);
//显示第一个对话框为默认对话框,其他对话框在开始的时候隐藏
pDialog[0]->ShowWindow(SW_SHOW);
pDialog[1]->ShowWindow(SW_HIDE);
pDialog[2]->ShowWindow(SW_HIDE);
m_CurSelTab = 0;//当前选择项初始化
6.在TAB Control控件的TCN_SELCHANGE消息中添加响应函数(其实也就是在资源视图双击TAB Control控件),添加切换窗体显示的代码如下:

void SettingDlg::OnTcnSelchangeTabSetchoisedlg(NMHDR *pNMHDR, LRESULT *pResult)
{
	pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);//把当前的页面隐藏起来
	m_CurSelTab = tabctrl.GetCurSel();//得到新的页面索引
	pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);//把新的页面显示出来
	*pResult = 0;
}








原文地址:https://www.cnblogs.com/weixinhum/p/3916697.html