MFC:Tab控件嵌入对话框
1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上。
再在对话框类中,声明一个CTabCtrl变量:
CTabCtrl m_tab;
变量m_tab用来与对话框中的Tab Control控件交互,为此要在DoDataExchange函数中加入DDX_Control语句:
DDX_Control(pDX, IDC_TAB1, m_tab);
IDC_TAB1是Tab Control控件的ID。
2.建立两个对话框程序,用来当做Tab Control控件的两个页。别忘了把Style改为Child,Border改为None。然后就可以在上面加其他控件了。
接着分别为这两个对话框建立两个类,比如CPage1和CPage2。
然后在对话框类头文件中,加入这两个对话框对象。同时增加一个变量int m_CurSelTab,用了表明是哪个Page即将被切换。
int m_CurSelTab;
CPage1 m_page1;
CPage2 m_page2;
CDialog* pDialog[]; //用来保存对话框对象指针
在对话框类的初始化函数中需要把CPage1、CPage2和Tab Control关联起来,并保存页面地址,设置初始页面。
//为Tab Control增加两个页面
m_tab.InsertItem(, _T("Farm"));
m_tab.InsertItem(, _T("Note"));
//创建两个对话框
m_page1.Create(IDD_DIALOG1, &m_tab);
m_page2.Create(IDD_DIALOG2, &m_tab);
//设定在Tab内显示的范围
CRect rc;
m_tab.GetClientRect(rc);
rc.top += ;
rc.bottom -= ;
rc.left += ;
rc.right -= ;
m_page1.MoveWindow(&rc);
m_page2.MoveWindow(&rc);
//把对话框对象指针保存起来
pDialog[] = &m_page1;
pDialog[] = &m_page2;
//显示初始页面
pDialog[]->ShowWindow(SW_SHOW);
pDialog[]->ShowWindow(SW_HIDE);
//保存当前选择
m_CurSelTab = ;
这里我们用了一个CDialog指针数组来进行保存Tab Control的每个页,数组的大小是Tab Control页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。
接下来,为Tab Control添加消息处理程序:
void CMy45455665Dlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
//把当前的页面隐藏起来
pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
//得到新的页面索引
m_CurSelTab = m_tab.GetCurSel();
//把新的页面显示出来
pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);
*pResult = ;
}
3.如果要在Tab Control控件外面获取其内部对话框中控件的数据,就需要使用DDX/DDV机制,还要调用相应的UpdateData函数。
m_page1.UpdateData();
m_page2.UpdateData();
MFC:Tab控件嵌入对话框的更多相关文章
- MFC TAB控件顺序
在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...
- mfc获取控件在对话框上的位置
CRect rect; GetDlgItem(控件ID)->GetWindowRect(&rect);//获取控件的屏幕坐标ScreenToClient(&rect);//转换为 ...
- MFC Spin 控件
一般应用: 设置属性: Auto Buddy(自动取关联控件为TAB顺序前一个)Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制)Wrap(数值超过范围时循环 ...
- 发布MFC ActiveX控件并实现自动更新
一. 引言 上一篇我们讲了如何使用 VC 2005来开发 MFC ActiveX控件,我们开发 ActiveX控件最终目的是将 ActiveX控件发布出来并嵌入在 Web网页中,随着控件 ...
- MFC TabCtrl 控件修改标签尺寸
注意:无论那种方法,都要先设置Tab控件的Style属性为fixed width. 第一种方法 MFC,tabcontrol控件改变标签大小 - CSDN博客 https://blog.csdn.ne ...
- 开源框架之TAB控件
我的开源框架之TAB控件 需求 (1)支持iframe.html.json格式的tab内容远程请求 (2)支持动态添加tab (3)支持远程加载完成监听,支持tab激活事件监听 (4)支持relo ...
- 终于知道如何使Tab控件的不出现白边的方法了
如下图,在棋盘右侧添加了Tab控件,做成属性页的样子,但出现了白边,很不美观: 后来发现,需要把Tab空间的Owner Draw Fixed 设置为TRUE.但问题又来了,属性页上的标题文字不显示了, ...
- vs2010开发activex(MFC)控件/ie插件(一)
原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/50782904 vs2010开发activex(MFC)控件: 第一步:生成ac ...
- 开发ActiveX控件调用另一个ActiveX系列1——开发一个MFC ActiveX控件
ActiveX开发的教程有很多,我也从中受益匪浅,例如以下这几篇: 基本教程:http://www.cnblogs.com/guenli/articles/1629915.html 注意事项:http ...
随机推荐
- JS-Promise笔记
转自:http://www.runoob.com/w3cnote/javascript-promise-object.html ECMAscript 6 原生提供了 Promise 对象. Promi ...
- maven的依赖管理详细
依赖管理 Jar包的管理 需求:整合struts2 页面上传一个客户id 跳转页面 1 添加依赖: 打开maven仓库的视图: 2 重建索引 1. 创建maven项目(同上) 2. 跳过骨架(同上 ...
- Mybatis-spring 动态代理
1.UserMapper.java package com.cn.mapper; import java.util.List; import com.cn.pojo.User; public inte ...
- React将某段文字插入到某个元素里
最基本使用: 引入依赖文件: <script src="https://unpkg.com/react@16/umd/react.development.js">< ...
- 【转】完整精确导入Kernel与Uboot参与编译了的代码到Source Insight,Understand, SlickEdit
The linux kernel and u-boot contains lots of files, when we want to broswe the source code,we just w ...
- ---dd io测试
下面是一个简单测试,虽然不够准确但是简单立即可行, 当前目录的IO写读测试: (写) dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync ( ...
- 尚硅谷springboot学习33-整合mybatis
引入mybatis依赖(还要引入mysql和jdbc依赖) <dependency> <groupId>org.mybatis.spring.boot</groupId& ...
- ODPS SQL <for 数据定义语言 DDL>
数据定义语言:(DDL) 建表语句: CREATE TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...
- Java语法 [常识1]
1. Java 语言采用的是双字节Unicode 编码 . 2. 标识符就是变量.常量.方法[函数].枚举.类.接口等由写代码的猴子们制定的名字.构成标识符的字母均有一定的规范,Java语言中的命名规 ...
- zabbix安装脚本
#!/bin/bash # #安装zabbix源.aliyun YUM源 #curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyu ...