1、在主窗口中定义一个CtabCtrl,添加变量m_tabctrl;

2、添加两个子窗口IDD_ONE_DIALOG,IDD_TWO_DIALOG(新建对话框,然后双击界面添加头文件和cpp),属性为child和无边框

3、在主窗口头文件中定义这两个子窗口的类对象m_one,m_two

自定义下面函数,放在初始化函数里面,就给这个tab生成了两个界面

void CDlg::AddTab()
{
CRect rect;
this->GetClientRect(&rect);
m_tabctrl.InsertItem(0, _T("1"));
m_tabctrl.InsertItem(1, _T("2"));
m_server.Create(IDD_ONE_DIALOG, &m_tabctrl);
m_server.SetWindowPos(NULL, 0, 20, rect.Width(), rect.Height(), SWP_SHOWWINDOW);
m_client.Create(IDD_TWO_DIALOG, &m_tabctrl);
m_client.SetWindowPos(NULL, 0, 20, rect.Width(), rect.Height(), SWP_HIDEWINDOW);
}

4、重写OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)虚函数

通过下面来显示或者隐藏对应项

switch (m_tabctrl.GetCurSel())
{
  case 0:
    {
    m_server.SetWindowPos(NULL, 0, 20, rect.Width(), rect.Height(), SWP_SHOWWINDOW);
    m_client.SetWindowPos(NULL, 0, 20, rect.Width(), rect.Height(), SWP_HIDEWINDOW);
    break;
    }
  case 1:
    {
    m_server.SetWindowPos(NULL, 0, 20, rect.Width(), rect.Height(), SWP_HIDEWINDOW);
    m_client.SetWindowPos(NULL, 0, 20, rect.Width(), rect.Height(), SWP_SHOWWINDOW);
    break;
    }

最新文章

  1. 第三课:sea.js模块加载原理
  2. 《BI那点儿事》数据流转换——逆透视转换
  3. ORACLE 监听日志文件太大停止写监听日志引起数据库连接不上问题
  4. 微信SDK开发学习
  5. nginx:403 forbidden 二种原因
  6. uva 816 Abbott的复仇
  7. [iOS]把16进制(#871f78)颜色转换UIColor
  8. 301. Remove Invalid Parentheses
  9. GNU C/C++ __attributes__ GCC中的弱符号与强符号
  10. ASP.NET MVC中Session以及处理方式
  11. 2016030101 - ubuntu15.1上安装git客户端
  12. 【04】基础:将采集结果转成Excel
  13. iot表输出按主键列排序,heap表不是
  14. iOS UIActivityIndicatorView 的使用
  15. 使用ConfuserEx加密混淆程序以及如何脱壳反编译
  16. springMVC上传
  17. 简单的C#TCP协议收发数据示例
  18. PyCharm配置Python3开发环境
  19. 设置Linux中的Mysql不区分表名大小写
  20. Swift要点:从Objective-C开发者的角度看Swift

热门文章

  1. 转:装完Centos7提示Initial setup of CentOS Linux 7 (core)
  2. mesos概述
  3. spark-submit常用参数
  4. 11.Java反射机制 哦对了,前面的序号来自随笔关于编程之路的思索第一篇
  5. Oracle游标总结三
  6. zw版_Halcon-delphi系列教程_卫星航拍精确打击目标自动识别
  7. 【fedora】制作安装u盘
  8. session_start()一些问题
  9. 关于UIWindow(转)
  10. (顺序表的应用5.4.2)POJ 1591 M*A*S*H(约瑟夫环问题的变形——变换步长值)