MFC-Tab Control控件使用

2023-05-16

在MFC当中使用Tab Control控件切换不同的界面,使用起来会复杂一些,至少是比Qt中的Tab Widget复杂得多。我接下来会以一个MFC对话框应用程序为例子,说明Tab Control控件的简单使用方法。

1.1建立一个MFC对话框应用程序,在对话框中拖入Tab Control控件,效果如下:

 

1.2在对话框类中,声明一个CTabCtrl变量:

CTabCtrl m_tab;
变量m_tab用来与对话框中的Tab Control控件交互,为此要在DoDataExchange函数中加入DDX_Control语句:
DDX_Control(pDX, IDC_TAB_TEST, m_tab);

 

2.1在资源中插入两个对话框,作为Tab Control控件切换的界面,然后必须将这两个对话框的Border属性设置为None,Style设置为Child,设置后的效果如下图所示:

 

2.2为创建的两个对话框建立两个类,如CTestDlg1,CTestDlg2,添加类的方法:右击对话框界面,在弹出框中选择添加类;

3.1在Tab Control控件所在的对话框类的头文件中添加以下内容并添加切换页面对话框的头文件:

public:
        int m_CurSelTab; 
        CTestDlg1 m_page1; 
        CTestDlg2 m_page2; 
        CDialog* pDialog[2];  //用来保存对话框对象指针


3.2在对话框类的初始化函数中需要把CTestDlg1、CTestDlg2和Tab Control关联起来,并保存页面地址,设置初始页面,在OnInitDialog()中添加以下实现代码:

        //为Tab Control增加两个页面
    m_tab.InsertItem(0, _T("测试1"));
    m_tab.InsertItem(1, _T("测试2"));
 
    //创建两个对话框
    m_page1.Create(IDD_DIALOG_TEST1, &m_tab);
    m_page2.Create(IDD_DIALOG_TEST2, &m_tab);
    //设定在Tab内显示的范围
    CRect rc;
    m_tab.GetClientRect(rc);
    rc.top += 20;
    rc.bottom -= 0;
    rc.left += 0;
    rc.right -= 0;
    m_page1.MoveWindow(&rc);
    m_page2.MoveWindow(&rc);
 
    //把对话框对象指针保存起来
    pDialog[0] = &m_page1;
    pDialog[1] = &m_page2;
    //显示初始页面
    pDialog[0]->ShowWindow(SW_SHOW);
    pDialog[1]->ShowWindow(SW_HIDE);
    //保存当前选择
    m_CurSelTab = 0;
这里我们用了一个CDialog指针数组来进行保存Tab Control的每个页面,数组的大小是Tab Control页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。


3.3为Tab Control添加消息处理程序,双击Tab Control控件,自动进入消息处理程序代码:
void CTabControlTestDlg::OnTcnSelchangeTabTest(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: 在此添加控件通知处理程序代码
 
    //把当前的页面隐藏起来
        pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
        //得到新的页面索引
    m_CurSelTab = m_tab.GetCurSel();
        //把新的页面显示出来
        pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);
 
    *pResult = 0;
}

 

本文参考的资料有:http://blog.csdn.net/hustspy1990/article/details/5425365

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC-Tab Control控件使用 的相关文章

  • 同时显示同一文档的多个视图

    如何说服 MFC 文档 视图体系结构让我同时显示同一文档的两个不同视图 例如 说我的CDocument子类代表某种描述的档案 我想要一个用户界面 其中该存档中的所有条目的名称都显示在CListView子类显示在左侧窗格中 而当前所选条目的详
  • MFC> 将对话框连接到对话框类

    我在现有的资源文件中定义了一个新对话框及其控件 我还创建了一个新文件 它将处理从此对话框生成的事件 但我不确定如何连接这两者 是声明enum IDD IDD NEW DIALOG 连接两者所需的一切 或者我们应该添加一些其他声明 在 MFC
  • DirectUI 的真相是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个 Windows 桌面应用程序 它需要一个很棒的 UI 我现在使用Visual Studio和MFC 后来听说DirectU
  • Boost::序列化和 MFC Doc/View 架构

    我正在移植现有的 MFC C 应用程序以对 XML 文件使用 Boost Serialization 我的 CDocument 对象包含应用程序的所有数据 我已将序列化函数实现为 template
  • 具有透明背景的CWnd

    我想创建一个基于 CWnd 的类 它将引入具有透明背景的控件 只要内容是静态的 创建一个控件并用透明背景绘制其内容对我来说没什么大不了的 问题是当我想创建一个内容不断变化的控件时 这是因为我不知道如何用父背景删除控件的内容 一般情况下可能不
  • 从不同操作系统检索到的故障转储指向消息循环。如何从那里到达故障位置? (TeamViewer 使我的进程崩溃。)

    我们软件的一位客户抱怨说 该软件在他的 Windows XP 计算机上崩溃了 我让他下载ProcDump https technet microsoft com en us sysinternals dd996900 aspx并按如下方式运
  • 升级后的 MFC 应用程序看起来仍然很旧

    我有一个用 VC6 编写的 MFC 应用程序 我已将其升级到 VS2015 并且它可以构建并运行 该应用程序是一个主可执行文件 其中包含许多包含对话框的 DLL 然而应用仍然looks就像用 VC6 构建的一样 所有 GUI 组件都没有 W
  • 将简单的 MFC CView/CDocument/CSingleDocTemplate 应用程序转换为 ActiveX 控件

    我有一个相当简单的 MFC 应用程序 它只定义了自己的子类CDocument CView and CFrameWnd并通过使用它们CSingleDocTemplate在视图的树中显示文档的只读内容 都是非常标准的MFC MVC 我现在需要转
  • MFC 控件上的文本 - Unicode 字符(例如日语)被截断

    背景 我正在开发一个 C MFC 应用程序 我们已经将其转换为显示 unicode 字符以支持外语 在大多数情况下 这是成功的并且 unicode 字符显示正确 但我遇到了一个问题 某些控件上的某些文本被截断 Example 在这里 您可以
  • 如何将 std::variant 作为 VARIANT* 传递给 ExecWB?

    我看过这篇关于使用的文章std variant https en cppreference com w cpp utility variant 这是因为以下代码引发了代码分析警告 void CChristianLifeMinistryHtm
  • 如何在 MFC 中创建 GUI

    我需要能够即时创建指南 MFC中有没有办法做到这一点 我了解了如何在 net 中做到这一点 但我们还没有做到这一点 如果没有 您是否有一些我可以使用的代码的指针 don t forget to add Rpcrt4 lib to your
  • 编辑默认工具栏时 Microsoft Visual Studio“未知位图格式”

    我已使用项目创建向导使用 Microsoft 基础类库 MFC 创建了一个应用程序 我创建了一个多文档界面 MDI 应用程序 该向导创建您可以使用的虚拟工具栏和菜单 我扩展了默认工具栏 没有任何问题 但是现在当我尝试通过资源视图编辑它时 我
  • 基于 C# .NET 文档的应用程序操作图

    我想开发一个新的应用程序 用户可以在其中创建描述流程的图表 我认为在这种情况下 基于文档的应用程序是我唯一的选择 我熟悉C net C MFC 和J2EE 根据您的经验 实现这一目标的最佳方法是什么 我应该关注哪个平台 图表必须由方框和箭头
  • MFC:如何在一个函数中捕获对话框每个控件的设置焦点

    我有 n 个对话框 它们具有相同的基本对话框 每个对话框都有自己的控件 编辑框 组合框 列表控件 etc 在基本对话框中 如何设置每个控件的焦点消息 例如 给出一个消息框 text Hello I got focus my ID is d
  • 如何将基数词转换为序数词

    有没有一种简单的方法可以将数字 1 2 3 转换为 1st 2nd 3rd 并且以这种方式我可以为该函数提供一种语言并具有它会返回我目标语言的正确形式吗 标准 C stl 或 boost 都可以 MFC 或 ATL win32 api 或我
  • MinGW支持MFC吗?

    我已经使用 MinGW 开发了 WinAPI 应用程序 没有出现任何问题 现在 我可以用 MFC 做同样的事情吗 我只是在这里猜测 但我认为您需要购买 Visual Studio 的副本才能获得使用 MFC 的许可证 MFC 也不因其对 C
  • 对 MFC UI 应用程序进行单元测试吗?

    如何对大型 MFC UI 应用程序进行单元测试 我们有一些大型 MFC 应用程序已经开发了很多年 我们使用一些标准的自动化 QA 工具来运行基本脚本来检查基础知识 文件打开等 这些由 QA 小组在日常构建后运行 但我们希望引入一些程序 以便
  • 发送WM_SETTEXT时如何避免EN_CHANGE通知?

    我有一个 CEdit 派生控件 当基本数据为空时 该控件显示字符串 N A 我最近添加了代码 以在控件获得焦点时清空控件 SetWindowText 并在用户离开焦点时将其设置回 N A SetWindowText N A 控空 唯一的问题
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 如何在MFC中对CListCtrl中的Item进行排序?

    我在 MFC 中制作了一个基于对话框的应用程序 我将 CListCtrl 控件放在对话框上 并将其视图样式设置为报告类型 我在此列表视图中有五列 所有列都是字符串类型 我想在此列表中实现排序 也就是说 当我单击某一列时 它应该对列表中的项目

随机推荐

  • Qt-5种布局控件详解

    实际开发中 xff0c 一个界面上可能包含十几个控件 xff0c 手动调整它们的位置既费时又费力 作为一款成熟的 GUI 框架 xff0c Qt 提供了很多摆放控件的辅助工具 xff08 又称布局管理器或者布局控件 xff09 xff0c
  • vnc怎么设置自适应屏幕,2种方法教你vnc怎么设置自适应屏幕

    VNC 是在基于 UNIX和 LINUX 操作系统的免费的开源软件 xff0c 远程控制能力强大 xff0c 高效实用 xff0c 其性能可以和 WIndows和 MAC 中的任何远程控制软件媲美 在使用vnc软件的过程中 xff0c 往往
  • C++中的野指针问题

    文章目录 1 C和C 43 43 中的野指针问题 1 1 野指针的概念 1 2 野指针的由来 1 3 杜绝野指针的基本原则 2 C和C 43 43 中的常见内存错误 2 1 常见内存错误 2 2 内存操作的基本规则 1 C和C 43 43
  • Qt-调用dll动态链接库

    事先写一个简单的dll文件 myDLL dll C版接口的 并且用我前两篇有关DLL文章里面的方法 xff0c 从dll中导出了导入库 lib 文件 xff0c dll中有两个函数 xff0c 原型如下 xff1a void HelloWo
  • Qt调用动态链接库ControlCAN.dll实例

    注意 xff1a controlCan引用静态库时需要将kerneldlls文件夹放置程序的输出路径下设备才能链接成功 首先添加外部库文件 xff08 lib文件 xff09 一 添加第三方的头文件 这个问题再简单不过了 xff0c 不过我
  • asposeword.dll通过word模板生成word、PDF

    效果图 1 word模板 xff08 部分 xff09 书签 2 生成结果图 开始上代码 Dictionary lt string string gt dictSource 61 new Dictionary lt string strin
  • Qt-捕获Windows消息

    Qt4版本的实现 方法1 xff1a 通过继承QWidget的类中重新实现winEvent接口 xff0c 以接收在消息参数中传递的本机Windows事件 bool QWidget winEvent MSG message long res
  • c语言-指针

    目录 1 指针是什么 xff1f 2 指针和指针类型 2 1 指针 43 整数 2 2 指针的解引用 3 野指针 3 1 野指针成因 3 2 如何规避野指针 4 指针运算 4 1 指针 43 整数 4 2 指针 指针 4 3 指针的关系运算
  • 汇编-函数调用的理解

    1 从代码的顺序执行说起 每一个程序员脑子里应该都有这么一种印象 xff1a 程序是顺序执行的 这个观点其实和我们开篇所讲的cpu的流水线执行过程直接相关 让我们再回忆一下脑海中关于函数调用的概念 xff0c 也许会是这个样子 xff1a
  • qt-制作生成dll动态链接库实例

    debug模式下体积过大的话 xff0c 选择release编译会缩小很大一部分体积 选择创建qt库项目 xff0c 根据提示选择相应配置 xff1a Type xff1a Shared Libray xff1b Statically li
  • qt-信号和槽的连接写法

    Qt4 旧语法 xff1a connect sender SIGNAL valueChanged QString QString receiver SLOT updateValue QString Qt新语法 xff1a QLabel la
  • C#实现查找指定端口被哪个进程占用并处理进程及dos命令下操作

    1 检查当前系统中8000端口是否正在被其它进程使用 xff1b 2 如果8000端口正在被使用 xff0c 就找出该进程 xff0c 并强行结束 3 使用C 变成语言实现 检查8000端口在被哪一个进程所使用 简单的解决方案如下 xff1
  • vncserver命令,vncserver命令有哪些

    vncserver是一个用来共享linux服务器上资源给其他分布式用户的服务 vncserver命令能实现的功能很多 xff0c 那具体有哪些vncserver命令呢 xff1f 跟着小编一起去看看吧 如图 xff1a xff08 官网地址
  • QT-QPainter绘制曲线等基本图形

    Qt中绘制2D图形最核心的一个类是QPainter 类QPainter是在设备类QPaintDevice上绘制几何图形 xff08 包括直线 曲线 圆形 弧形 矩形等等 xff09 xff0c 其中设备类QPaintDevice的子类又有Q
  • qt-项目部署(某些情况下编译器中运行异常的话可以使用命令windeployqt 程序名在安装的qt dos命令下补全部分依赖库在运行项目或发布)

    一般qt项目启动不起来大部分都是因为依赖库要么缺失要么位数不对 有时候缺失的dll不会提示出来 xff0c 建议检查设置计算机环境变量 xff0c 项目编译设置路径等 xff0c 然后再使用dos命令windeployqt添加qt依赖库 Q
  • Creator-配置MSVC调试器

    安装完QT后会看到Qt Creator中的MSVC构建组件带有黄色的感叹号 xff0c 那是因为没有调试器的原因 由于Qt MSVC版本套件没有默认安装调试器 需要我们自己手动下载安装 根据官方文档Setting Up Debugger Q
  • MFC和QT等UI框架的特点

    UI设计的3大原则 xff1a 面向对象 xff1b MVC xff1b 消息队列驱动 xff1b 直到现在各个UI系统 xff0c 包括题主所提到的MFC WPF Qt xff0c 也包括其它 xff0c 诸如Android SDK Co
  • MFC中创建线程实例

    static UINT ThreadFunc LPVOID pParam 线程函数声明UINT CTestApp ThreadFunc LPVOID pParam 可以传递对话框的等指针变量 利用pParam指针参数来操作各种ui对象和类型
  • QT和MFC中怎么使用继承基类的自定义控件放置在界面上

    1 Qt中 自定义button继承于QPushButton xff0c f2查看指定控件的声明定义 xff0c 可以手动改ui form h文件里各个类型的控件指针变量 xff0c 改成自己定义的 34 xff08 这里ui form h在
  • MFC-Tab Control控件使用

    在MFC当中使用Tab Control控件切换不同的界面 xff0c 使用起来会复杂一些 xff0c 至少是比Qt中的Tab Widget复杂得多 我接下来会以一个MFC对话框应用程序为例子 xff0c 说明Tab Control控件的简单