CTabCtrl
转载至 http://blog.csdn.net/jacklam200/archive/2008/08/01/2753797.aspx
一、在对话框视图中加入CTabCtrl控件
资源ID:IDC_TAB,变量名:m_Tab
二、在OnInitDialog()中加入以下代码:
m_Tab.InsertItem(0,"窗口1");
m_Tab.InsertItem(1,"窗口2");
// 创建子窗口实例(事先创建好),将父窗口设为m_Tab
// CChileDlg1 m_dlgChile1;
// CChileDlg2 m_dlgChile2;
m_dlgChile1.Create(IDD_DIALOG_CHILD1,GetDlgItem(IDC_TAB));
m_dlgChile2.Create(IDD_DIALOG_CHILD2,GetDlgItem(IDC_TAB));
// 将子窗口显示在m_Tab范围内
CRect rs;
m_Tab.GetClientRect(rs);
rs.top+=20;
rs.bottom-=4;
rs.left+=4;
rs.right-=4;
m_dlgChile1.MoveWindow(rs);
m_dlgChile2.MoveWindow(rs);
// 默认显示第一个子窗口
m_Tab.SetCurSel(0);
m_dlgChile1.ShowWindow(TRUE);
示例代码
view plaincopy to clipboardprint?
Item.mask = TCIF_TEXT;
int nPages = 2; //3个页面
for(int nN = 0; nN < nPages; nN++)
{
switch(nN)
{
case 0:
m_zipDlg.Create(IDD_ZIP,GetDlgItem(IDC_TAB1));
break;
case 1:
m_unZipDlg.Create(IDD_UNZIP,GetDlgItem(IDC_TAB1));
break;
}
}
for(int nN = 0; nN < nPages; nN++)
{
switch(nN)
{
case 0:
Item.pszText=_T("ZIP");
break;
case 1:
Item.pszText=_T("UNZIP");
break;
}
m_tab.InsertItem(nN,&Item);
}
m_tab.SetCurSel(0);
m_zipDlg.ShowWindow(TRUE);
Item.mask = TCIF_TEXT;
int nPages = 2; //3个页面
for(int nN = 0; nN < nPages; nN++)
{
switch(nN)
{
case 0:
m_zipDlg.Create(IDD_ZIP,GetDlgItem(IDC_TAB1));
break;
case 1:
m_unZipDlg.Create(IDD_UNZIP,GetDlgItem(IDC_TAB1));
break;
}
}
for(int nN = 0; nN < nPages; nN++)
{
switch(nN)
{
case 0:
Item.pszText=_T("ZIP");
break;
case 1:
Item.pszText=_T("UNZIP");
break;
}
m_tab.InsertItem(nN,&Item);
}
m_tab.SetCurSel(0);
m_zipDlg.ShowWindow(TRUE);
三、响应m_Tab的TCN_SELCHANGE消息,实现切换页面功能
void CMyDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
int nCurSel = m_Tab.GetCurSel();
switch(nCurSel)
{
case 0: // 显示子窗口1
m_dlgChile1.ShowWindow(TRUE);
m_dlgChile2.ShowWindow(FALSE);
break;
case 1: // 显示子窗口2
m_dlgChile1.ShowWindow(FALSE);
m_dlgChile2.ShowWindow(TRUE);
break;
}
*pResult = 0;
}
------------------------------------------------------------------------------------------------------
windows mobile的
PROPSHEETHEADER psh;
PROPSHEETPAGE psp[2];
int i = 0;
memset(&psh, 0, sizeof(PROPSHEETHEADER));
for(i = 0; i < 2; i++)
{
psp[i].dwSize = sizeof(PROPSHEETPAGE);
psp[i].dwFlags = PSP_DEFAULT | PSP_USETITLE;
psp[i].hInstance = g_hInst;
psp[i].lParam = (LPARAM)hWnd;
}
psp[0].pszTitle = TEXT("压缩文件");
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_ZIPFILE);
psp[0].pfnDlgProc = (DLGPROC)ZipDlgProc;
psp[1].pszTitle = TEXT("解压文件");
psp[1].pszTemplate = MAKEINTRESOURCE(IDD_UNZIP);
psp[1].pfnDlgProc = (DLGPROC)UnzipDlgProc;
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_MAXIMIZE;
psh.hwndParent = hWnd;
psh.hInstance = g_hInst;
//psh.pszCaption = TEXT("Prop Sheet Title");
psh.nPages = 2;
psh.nStartPage = 0;
psh.ppsp = psp;
psh.pfnCallback = 0;
i = PropertySheet(&psh);
CTabCtrl的更多相关文章
- 在CTabCtrl上动态创建CListCtrl控件
m_List.Create(WS_OVERLAPPED|WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_AUTOARRANGE|LVS_SHOWSELALWAYS|LVS_EDI ...
- CTabCtrl的使用
1.在主窗口中定义一个CtabCtrl,添加变量m_tabctrl; 2.添加两个子窗口IDD_ONE_DIALOG,IDD_TWO_DIALOG(新建对话框,然后双击界面添加头文件和cpp),属性为 ...
- CTabCtrl - 如何使用TabCtrl控件
CTabCtrl - 如何使用TabCtrl控件 建立一个基于对话框的MFC应用程序TabCtrlTest Step 1:在资源视图中,新建对话框资源,资源ID:IDD_TabCtrlExample_ ...
- mfc CTabCtrl
知识点: CTabCtrl常用属性 CTabCtrl类常用成员函数 CTabCtrl代码示例 一.CTabCtrl控件属性 Bottom:底部样式 Vertical:垂直样式 与Bottom结合使用, ...
- MFC控件CTabCtrl关联变量
1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上. 再在对话框类中,将该控件绑定一个变量 用两种方法: 1 ) 自己定义成员变量 CTabCtr ...
- CTabCtrl控件标签的相关设置
原文链接: http://blog.csdn.net/happyhell/article/details/6012177 1. 获得CTabCtrl标签高度:CRect rc; CTabCtrl *p ...
- duilib各种布局的作用,相对布局与绝对布局的的意义与用法
大多数刚使用duilib的朋友时候非常依赖duilib自带的设计器,用他可以拖拉控件,可视化的做出自己想要的界面.可是用一段时间就会发现原带的设计器有很多bug,时不时会崩溃,支持的控件数量有限,属性 ...
- mfc ui3
引用:http://www.cnblogs.com/rainbowzc/archive/2010/06/02/1749872.html 本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者.读者 ...
- PeCheck
早上起来看到这个代码 整理一下 // PETableDlg.cpp : 实现文件 // #include "stdafx.h" #include "PECheck.h& ...
随机推荐
- 自己写的select元素可编辑、可筛选JQuery插件 jquery.inputselectbox.js
/* 功能:实现对select下拉框可输入的功能, 输入时会对下拉框的内容进行动态过滤. 参数:没有选择任何值时默认显示的文字 如何使用:$("#firstLevel").inpu ...
- velocity 教程
1,<title> $!{product.name} - $!{title} $!{about.title} - $!{title} $!{news.title} - $!{title} ...
- dip2px
package com.itheima.zhbj.utils; import android.content.Context; public class DensityUtils { public s ...
- 巧妙利用ToArray()函数移除集合中的元素
当我们对集合foreach遍历时,不能直接移除遍历的集合的元素,解决的方法有很多种,见我之前的随笔: http://www.cnblogs.com/527289276qq/p/4331000.html ...
- Windsock套接字I/O模型学习 --- 第一章
1. I/O模型共有以下几种: 阻塞(blocking)模型 选择(select)模型 WSAAsyncSelect模型 WSAEventSelect模型 重叠(overlapped)模型 完成端口( ...
- Greedy Change
Greedy Change time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 重启oracle数据库的一次操作命令和alter日志。
今天重启oracle数据库的命令和alter日志: oracle@NMSSERVER1:~> sqlplus '/as sysdba' SQL*Plus: Release 11.2.0.3.0 ...
- 使用React Native一年后的感受
转载自:http://www.dobest.me/blog/2016/06/12/%E4%BD%BF%E7%94%A8React%20Native%E4%B8%80%E5%B9%B4%E5%90%8E ...
- [转]SSL协议详解
背景介绍 最近在看<密码学与网络安全>相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL. 在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识. 1.密 ...
- U盘安装Centos后拔除U盘无法启动问题解决方法
今天安装CentOS后发现把引导文件安装在U盘上了,所以不插U盘就无法进入CentOS系统,在网上找到这种方法成功摆脱U盘启动,避免重新用U盘做引导盘安装系统,简单省事,所以发个帖,留着以后备用. 1 ...