023.MFC_属性页控件(tab control)
属性页控件
属性页->选项卡->对话框
CTabCtrl
一、建立名为tabCtrl的mfc工程,添加Tab Control控件,设置属性ID为IDC_TAB,并添加变量m_tab
在tabCtrlDlg.cpp文件函数BOOL CtabCtrlDlg::OnInitDialog()中添加
// TODO: 在此添加额外的初始化代码
m_tab.InsertItem(0,_T("第一页"));
m_tab.InsertItem(1,_T("第二页"));
二、在资源视图中添加两个dialog,分别设置属性ID为 IDD_PAGE1,IDD_PAGE2。因为dialog是嵌入到tab里边,所以设置style ->child,Border->None(IDD_PAGE1,IDD_PAGE2都要设置);
为属性ID为 IDD_PAGE1 的dialog添加类CPage1Dlg ,属性ID为 IDD_PAGE2 的dialog添加类 CPage2Dlg
在tabCtrlDlg.h中添加两个变量
// 实现
protected:
HICON m_hIcon;
CPage1Dlg m_page1;
CPage2Dlg m_page2;
记得在tabCtrlDlg.h中添加头文件
#include "Page1Dlg.h"
#include "Page2Dlg.h"
为了显示添加的对话框需在CtabCtrlDlg::OnInitDialog()中继续添加
// TODO: 在此添加额外的初始化代码
m_tab.InsertItem(0,_T("第一页"));
m_tab.InsertItem(1,_T("第二页"));
m_page1.Create(MAKEINTRESOURCE(IDD_PAGE1),&m_tab);
m_page2.Create(MAKEINTRESOURCE(IDD_PAGE2),&m_tab);
CRect rc;
m_tab.GetClientRect(rc);
rc.top += 30;
rc.left += 8;
rc.right -= 8;
rc.bottom -= 8;
m_page1.MoveWindow(rc);
m_page2.MoveWindow(rc);
m_page1.ShowWindow(SW_SHOW); //显示对话框1
三、为了使tab页有切换效果需在主窗口IDD_TABCTRL_DIALOG中添加事件处理函数如图步骤,并添加代码
在tabCtrlDlg.cpp文件中添加
void CtabCtrlDlg::OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
switch(m_tab.GetCurSel())
{
case 0:
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
break;
case 1:
m_page1.ShowWindow(SW_HIDE);
m_page2.ShowWindow(SW_SHOW);
break;
default:
break;
}
*pResult = 0;
}
最新文章
- BZOJ2982——combination
- JavaScrip之对象与继承
- 为什么一个类的全局变量默认以m开头?
- HTML5音乐播放器(最新升级改造加强版)
- 移动 Web 开发技巧
- vbs操作txt文本文件常用方法(函数)
- (转)c指针
- 对于requirejs AMD模块加载的理解
- Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法
- 过滤所有的HTML标签
- oracle模糊查询效率提高
- 判断是否联网_检测网络的类型为3G、2G、wap、wifi
- CI(-)框架结构
- HDOJ1728 BFS【STL__queue_的应用】
- 老男孩Python全栈开发(92天全)视频教程 自学笔记20
- 【PAT】A1002 A+B for Polynomials
- node20180927
- Django框架详细介绍---模板系统
- Unity Alpha融合参数(便查)
- SaaS产品成功学
热门文章
- HDU 5572 An Easy Physics Problem【计算几何】
- myeclipse 如何更改java jsp 等文件的编码方式
- Laravel的请求声明周期
- websocket实现数据库更新时前端页面实时刷新
- oracle选择最有效率的表名顺序
- oracle函数 SESSIONTIMEZONE
- Mysql统计信息处理及binlog解释
- [翻译]Python中yield的解释
- Node.js 安装第三方模块包(npm),通过 package.json配置信息安装项目依赖的模块
- 浏览器间CSS样式兼容问题