1.添加控件tabcontrol。

2.切换到资源界面->Dialog->插入Dialog,创建两个Dialog界面。

3.为新建的两个Dialog添加类,在新建的Dialog界面右键类向导添加对应的类。

4.添加TabSheet.cpp 和TabSheet.h 这两个文件从网上下载即可,具体源码如下:

TabSheet.cpp:

// TabSheet.cpp : implementation file
#include "stdafx.h"
#include "TabSheet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
// CTabSheet
CTabSheet::CTabSheet()
{  m_nNumOfPages = 0;  m_nCurrentPage = 0;
}  CTabSheet::~CTabSheet()
{
}  BEGIN_MESSAGE_MAP(CTabSheet, CTabCtrl)  //{{AFX_MSG_MAP(CTabSheet)  ON_WM_LBUTTONDOWN()  //}}AFX_MSG_MAP
END_MESSAGE_MAP()  /
// CTabSheet message handlers  BOOL CTabSheet::AddPage(LPCTSTR title, CDialog *pDialog,UINT ID)
{  if( MAXPAGE == m_nNumOfPages )  return FALSE;  m_nNumOfPages++;  m_pPages[m_nNumOfPages-1] = pDialog;  m_IDD[m_nNumOfPages-1] = ID;  m_Title[m_nNumOfPages-1] = title;  return TRUE;
}  void CTabSheet::SetRect()
{  CRect tabRect, itemRect;  int nX, nY, nXc, nYc;  GetClientRect(&tabRect);  GetItemRect(0, &itemRect);  nX=itemRect.left;  nY=itemRect.bottom+1;  nXc=tabRect.right-itemRect.left-2;  nYc=tabRect.bottom-nY-2;  m_pPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);  for( int nCount=1; nCount < m_nNumOfPages; nCount++ )  m_pPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);  }  void CTabSheet::Show()
{  for( int i=0; i < m_nNumOfPages; i++ )  {  m_pPages[i]->Create( m_IDD[i], this );  InsertItem( i, m_Title[i] );  }  m_pPages[0]->ShowWindow(SW_SHOW);  for( int i=1; i < m_nNumOfPages; i++)  m_pPages[i]->ShowWindow(SW_HIDE);  SetRect();  }  void CTabSheet::OnLButtonDown(UINT nFlags, CPoint point)
{  CTabCtrl::OnLButtonDown(nFlags, point);  if(m_nCurrentPage != GetCurFocus())  {  m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);  m_nCurrentPage=GetCurFocus();  m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);  //      m_pPages[m_nCurrentPage]->SetFocus();  }
}  int CTabSheet::SetCurSel(int nItem)
{  if( nItem < 0 || nItem >= m_nNumOfPages)  return -1;  int ret = m_nCurrentPage;  if(m_nCurrentPage != nItem )  {  m_pPages[m_nCurrentPage]->ShowWindow(SW_HIDE);  m_nCurrentPage = nItem;  m_pPages[m_nCurrentPage]->ShowWindow(SW_SHOW);  //      m_pPages[m_nCurrentPage]->SetFocus();  CTabCtrl::SetCurSel(nItem);  }  return ret;
}  int CTabSheet::GetCurSel()
{  return CTabCtrl::GetCurSel();
} //释放page资源
void CTabSheet::Free()
{CTabCtrl::DeleteAllItems();for( int i=0; i < m_nNumOfPages; i++ )  {  m_pPages[i]->DestroyWindow();m_IDD[i] = NULL;m_Title[i] = NULL;}  m_nCurrentPage = 0;m_nNumOfPages = 0;//CTabCtrl::DestroyWindow();  //注意不要将this指针释放了
}

TabSheet.h

#if !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_)
#define AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_  #if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// TabSheet.h : header file
//  /
// CTabSheet window
#define MAXPAGE 16  class CTabSheet : public CTabCtrl
{  // Construction
public:  CTabSheet();  // Attributes
public:  // Operations
public:  // Overrides  // ClassWizard generated virtual function overrides  //{{AFX_VIRTUAL(CTabSheet)  //}}AFX_VIRTUAL  // Implementation
public:  int GetCurSel();  int SetCurSel(int nItem);  void Show();  void Free();void SetRect();  BOOL AddPage(LPCTSTR title, CDialog *pDialog, UINT ID);  virtual ~CTabSheet();  // Generated message map functions
protected:  LPCTSTR m_Title[MAXPAGE];  UINT m_IDD[MAXPAGE];  CDialog* m_pPages[MAXPAGE];  int m_nNumOfPages;  int m_nCurrentPage;  //{{AFX_MSG(CTabSheet)  afx_msg void OnLButtonDown(UINT nFlags, CPoint point);  //}}AFX_MSG  DECLARE_MESSAGE_MAP()
};  /  //{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.  #endif // !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_)

5.将TabSheet.cpp和TabSheet.h添加到工程中。

6.为tabcontrol添加变量,这里一定要以CTabSheet类型,不是选择类型,是直接写CTabSheet。

7.使用m_tab变量来关联Dialog1和Dialog2,关联之前需要在主文件对应的头文件中(我用FBG来创建的项目,这里就是FBGDlog.h)引入Dialog1和Dialog2头文件,然后用CDialog1和CDialog2类来定义变量。

8.在主文件中(我用FBG来创建的项目,这里就是FBGDlog.C)添加初始化代码如下:

AddPage函数就是用来添加页的,对一个的三个参数:第一个是标题,第二个是选择的Dialog,第三个是Dialog的ID。Show函数当然是用来显示的。

9.好了,编译运行看一下哈……….这么奇怪,是可以切换,但是怎么直接弹出来了,而且不在框内。

10.修改Dialog1和Dialog2的外观属性,Border改为 Node 无边框,Style改为 Child 这样就不会跑不到外面了。

11.运行一下,哈哈,真听话。

MFC tabcontrol切换界面相关推荐

  1. MFC多视频播放界面模板--(二)搭建视频播放界面空壳程序

    继这上一篇静态文本画框的内容,将此功能加载进来,用于区分开窗口界面,这篇主要是编写出空壳框架,可以切换画面1.2.4.9以及全屏状态,加选中状态框. 一.界面布局 创建两个对话框,ID分别为 IDD_ ...

  2. mfc制作登录界面mysql_MFC制作漂亮界面之登录界面

    [实例简介] MFC制作漂亮界面之登录界面的源码,主要使用前面学过的内容来实践一个完整的界面. [实例截图] [核心代码] LoginTigger └── LoginTigger ├── LoginT ...

  3. wxpython界面切换_wxpython实现按钮切换界面的方法

    本文实例为大家分享了wxpython按钮切换界面的具体实现代码,供大家参考,具体内容如下 #-*- coding:utf-8 -*- import wx class TestFrame(wx.Fram ...

  4. 二开精美UI站长论坛网站源码 可切换界面

    简介: 二开精美UI站长论坛网站源码 可切换界面,喜欢就下载吧. 网盘下载地址: http://kekewl.cc/QjCUMBrN0WC0 图片:

  5. wxpython滑动面板_wxpython实现按钮切换界面的方法

    本文实例为大家分享了wxpython按钮切换界面的具体实现代码,供大家参考,具体内容如下 #-*- coding:utf-8 -*- import wx class TestFrame(wx.Fram ...

  6. 关于(TabHost),(Button配合Fragment),(Menu)这三种常见的切换界面手法分析...

    前言 作为一个读者变成一个写技术文章的作者,我决定坚持还是写一些简单实用的文章(毕竟理论太高深,也许看的人很蛋疼....我也相信如果有兴趣深入研究,必然会自己找百度的),好了言归真转. 主题内容 在我 ...

  7. 智慧树期末考试可以切换页面吗_智慧树考试可以切换界面吗?中途可以退出吗...

    智慧树是一个在线教育平台,也是可以用来在线考试的,不少朋友想知道智慧树考试可以切换界面吗?智慧树考试中途退出有记录吗?下面小编就为大家带来相关介绍,感兴趣的朋友们快来一起了解下吧! -->> ...

  8. QT实现滑动切换界面,ARM/Linux触屏滑动切换界面,切换Qwidget

    QT实现滑动切换界面,触屏滑动切换界面 实现思想 实现过程 完整代码 实现思想 项目中要用到ARM,要求手势滑动能够切屏,首先我们想到使用 QGestureEvent,但使用起来比较麻烦,并且个人了解 ...

  9. 仿照QQ的左右滑动切换界面的效果

    模仿QQ的左右滑动切换界面的效果 暑假第四十天,在南阳,天气好闷热,幸亏下午下了一场好雨,嗯,爽啊!嘿嘿,最近四十天天宅在地下室看电脑,我的眼睛最近都有点不舒服了,哎,无语中......今天没事就来写 ...

最新文章

  1. VHD安装的Win7 X64系统迁移到VMware虚拟机(P2V)...
  2. 大数据之_SCALA工作笔记001---Centos7.3安装scala
  3. 10深入Redis Cluster
  4. Arduino学习笔记 TB6612FNG模块
  5. 解决硬盘打不开的问题
  6. java验证13位数书号_ISBN(国际标准书号)的校验
  7. Ansible9:变量之Fact
  8. excel转vcf 易语言免费版
  9. 二维码图片如何快速生成
  10. 转载于掘金的vue3学习笔记
  11. mac下PHP安装mongodb的扩展
  12. 记录一次公选课刷课过程,由抓包到代码实现【原创,转载请说明】。
  13. windows下如何查看本机所在局域网内所有可以访问的IP
  14. 谷歌浏览器翻译英文网页功能消失解决方案
  15. android 外接扫码枪_Android手机(设备)连接扫描枪扫码遇到的问题
  16. 无法在设置线程模式后对其加以更改
  17. PHP获取微信用户手机号
  18. 查看库文件编译时所使用的GCC版本号
  19. 转帖【编码原则十日谈】
  20. !外贸邮件处理经验谈

热门文章

  1. 成都大学计算机学院有没有大专,成都计算机专科大学
  2. vue input银行卡四位空一格
  3. 微信小程序与传统APP十大优劣对比
  4. Linux rm命令 删除文件夹或文件
  5. 十六年开发经验的三十八岁程序员创业十年故事(二)
  6. php 字符串转int型
  7. python wxpy模块_wxpy微信模块学习之常用组件
  8. vi设计对一个企业品牌的影响力
  9. 属性文件编辑器插件——Properties Editor
  10. JS:PC网站转化为手机自适应网页