本工程为对话框程序,主对话框有三个标签页并各有一个编辑框,点击“显示”按钮后显示用户在各属性页中输入的数据
主对话框中:
添加一个标签页控件:ID_TAB1,添加关联控件变量m_tab;
添加一个用于显示的按钮:ID_BTN_SHOW
资源视图中添加三个对话框,均设置属性:Border:None无边框,Style:Chile子窗口
ID_DIALOG1,添加类CPage1继承自CDialog,添加编辑框并建立数值型关联变量m-edit1
ID_DIALOG2,添加类CPage2继承自CDialog,添加编辑框并建立数值型关联变量m-edit2
ID_DIALOG3,添加类CPage3继承自CDialog,添加编辑框并建立数值型关联变量m-edit3
主对话框中添加变量:
CPage1 m_page1;
CPage2 m_page2;
CPage3 m_page3;
CString m_str; //构造函数中初始化
在OnInitDialog()中初始化标签控件:
//标签控件添加3个页标头
m_tab.InsertItem(0,"编号");
m_tab.InsertItem(1,"姓名");
m_tab.InsertItem(2,"电话");
CRect rect,rc;
//获取标签控件区域
m_tab.GetWindowRect(rect);
ScreenToClient(rect);
//获取标签头的区域
m_tab.GetItemRect(0,rc);
//设置标签控件中央区域
rect.top+=rc.Height();
//四周向中央缩进3px
rect.DeflateRect(3,3);
//在标签控件中央区域创建三个子叶窗口
m_page1.Create(IDD_DIALOG1,this);
m_page1.MoveWindow(rect);
m_page2.Create(IDD_DIALOG2,this);
m_page2.MoveWindow(rect);
m_page3.Create(IDD_DIALOG3,this);
m_page3.MoveWindow(rect);
//显示第一页
m_page1.ShowWindow(SW_SHOW);
m_page1.SetFocus();
添加标签控件的TCN_SELCHANGE消息反射函数OnSelchangeTab1
void CTabTestDlg::OnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
//获取选中标签页索引
int nSel=m_tab.GetCurSel();
//三个标签页窗口放入数组中
CWnd *ps[]={&m_page1,&m_page2,&m_page3};
int i=0;
while(i<sizeof(ps)/sizeof(ps[0]))
{
//选中的标签页窗口显示,其它隐藏
ps[i]->ShowWindow(i==nSel?SW_SHOW:SW_HIDE);
i++;
}
ps[nSel]->SetFocus();
*pResult = 0;
}
添加“显示”按钮的消息响应函数:
void CTabTestDlg::OnBnClickedBtnShow()
{
//更新每个标签页的数据到关联变量中
m_page1.UpdateData();
m_page2.UpdateData();
m_page3.UpdateData();
//显示用户在每个标签页输入的数据
m_str+="Num:"+m_page1.m_num+",Name:"+m_page2.m_name+",Phone:"+m_page3.m_phoen;
MessageBox(m_str,"信息");
m_str="";
}