- 基于对话框的MFC程序, 在主对话框中添加TabCtrl控件,CTabCtrl 类型的变量m_tabctrl;
- 插入3对话框,并设置属性style=Child,Border=None,创建三个对话框类CDialog1,CDialog2,CDialog3;
- 在主对话框中创建三个对话框类的全局对象 m_dg1,m_dg2,m_dg3;
- 在主对话框的初始化函数OnInitDialog中初始化;
- 在主对话框中添加TabCtrl控件的TCH_SELCHANGE消息;
-
BOOL CTabUIDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标// TODO: 在此添加额外的初始化代码
//设置标签头信息
m_tabCtrl.InsertItem(0, _T("加载图片"));
m_tabCtrl.InsertItem(1, _T("直方图统计"));
m_tabCtrl.InsertItem(2, _T("图像编码"));//在view类中,Create 是虚函数由框架调用,是用来“生成一个窗口的子窗口”。
m_dg1.Create(IDD_DIALOG1, &m_tabCtrl);
m_dg2.Create(IDD_DIALOG2, &m_tabCtrl);
m_dg3.Create(IDD_DIALOG3, &m_tabCtrl);//正确放置对话框
CRect si;
m_tabCtrl.GetClientRect(&si);
CRect it;
m_tabCtrl.GetItemRect(0, it);
si.top += it.top+20;
si.left += 5;
si.bottom -=5;
si.right -=5;
m_dg1.MoveWindow(&si);
m_dg2.MoveWindow(&si);
m_dg3.MoveWindow(&si);//设置第一个显示,即选中的标签,对话框
m_dg1.ShowWindow(SW_SHOW);
m_tabCtrl.SetCurFocus(0);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
} -
void CTabUIDlg::OnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
switch (m_tabCtrl.GetCurSel())
{
case 0:
m_dg1.ShowWindow(SW_SHOW);
m_dg2.ShowWindow(SW_HIDE);
m_dg3.ShowWindow(SW_HIDE);
m_dg1.SetFocus();
break;
case 1:
m_dg2.ShowWindow(SW_SHOW);
m_dg1.ShowWindow(SW_HIDE);
m_dg3.ShowWindow(SW_HIDE);
m_dg2.SetFocus();
break;
case 2:
m_dg3.ShowWindow(SW_SHOW);
m_dg1.ShowWindow(SW_HIDE);
m_dg2.ShowWindow(SW_HIDE);
m_dg3.SetFocus();
break;
default:
break;
}
*pResult = 0;
}