转载至 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的更多相关文章

  1. 在CTabCtrl上动态创建CListCtrl控件

    m_List.Create(WS_OVERLAPPED|WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_AUTOARRANGE|LVS_SHOWSELALWAYS|LVS_EDI ...

  2. CTabCtrl的使用

    1.在主窗口中定义一个CtabCtrl,添加变量m_tabctrl; 2.添加两个子窗口IDD_ONE_DIALOG,IDD_TWO_DIALOG(新建对话框,然后双击界面添加头文件和cpp),属性为 ...

  3. CTabCtrl - 如何使用TabCtrl控件

    CTabCtrl - 如何使用TabCtrl控件 建立一个基于对话框的MFC应用程序TabCtrlTest Step 1:在资源视图中,新建对话框资源,资源ID:IDD_TabCtrlExample_ ...

  4. mfc CTabCtrl

    知识点: CTabCtrl常用属性 CTabCtrl类常用成员函数 CTabCtrl代码示例 一.CTabCtrl控件属性 Bottom:底部样式 Vertical:垂直样式 与Bottom结合使用, ...

  5. MFC控件CTabCtrl关联变量

    1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上. 再在对话框类中,将该控件绑定一个变量 用两种方法: 1 ) 自己定义成员变量 CTabCtr ...

  6. CTabCtrl控件标签的相关设置

    原文链接: http://blog.csdn.net/happyhell/article/details/6012177 1. 获得CTabCtrl标签高度:CRect rc; CTabCtrl *p ...

  7. duilib各种布局的作用,相对布局与绝对布局的的意义与用法

    大多数刚使用duilib的朋友时候非常依赖duilib自带的设计器,用他可以拖拉控件,可视化的做出自己想要的界面.可是用一段时间就会发现原带的设计器有很多bug,时不时会崩溃,支持的控件数量有限,属性 ...

  8. mfc ui3

    引用:http://www.cnblogs.com/rainbowzc/archive/2010/06/02/1749872.html 本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者.读者 ...

  9. PeCheck

    早上起来看到这个代码  整理一下 // PETableDlg.cpp : 实现文件 // #include "stdafx.h" #include "PECheck.h& ...

随机推荐

  1. 怎么利用GitHub

    我们一直用GitHub作为 免费的远程仓库,如果是个人的开源项目,放到GitHub上完全没有问题,其实GitHub就是一个开源协作社区,既可以让 别人参与你的开源项目,也可以参与别人的开源项目,在Gi ...

  2. 【读书笔记】C Primer Plus ch.15位运算 示例程序15.1 整数转换成二进制字符串

    正文: https://www.zybuluo.com/RayChen/note/595213

  3. SSH登录很慢问题的解决方法

    用ssh连其他linux机器,会等待10-30秒才有提示输入密码.严重影响工作效率. 关闭ssh的gssapi认证 用ssh -v user@server 可以看到登录时有如下信息: debug1: ...

  4. 并查集+bfs+暴力滑窗 Codeforces Round #356 (Div. 2) E

    http://codeforces.com/contest/680/problem/E 题目大意:给你一个n*n的图,然后图上的 . (我们下面都叫做‘点’)表示可以走,X表示不能走,你有如下的操作, ...

  5. Windows平台查看端口占用情况

    1.查看所有的端口占用情况 netstat -ano 协议    本地地址                     外部地址               状态                   PI ...

  6. phpStorm 2016.1.2 最新版激活方法【亲测可用】

    测试日期:2016-07-29 下载地址:https://yunpan.cn/c6mWAGbExcyjf  访问密码 00fb 1.windows版本 菜单help >>>> ...

  7. label不换行的问题

    除了numberOfLines属性label有一个preferredMaXLayoutWidth属性.设置试试

  8. c语言的编译过程和GCC 编译参数

    原文: http://www.cnblogs.com/zhangShanGui/p/4912135.html C语言的编译过程和GCC编译参数 C语言的编译一般有三个步骤: 预编译: gcc -E - ...

  9. druid-1.0.13 数据库配置文件密码加密

    1.cmd 切换到druid目录  我的是C:\tool\apache-tomcat-7.0.67\webapps\projectA\WEB-INF\lib 2.运行命令 java -cp druid ...

  10. 关于SVN更新注意

    SVN更新时其实大部分都可以直接更新但是只有在 当然为0就没有事但是如果不是0的话就要注意了表示你修改的和别人修改了相同的文件先点开 次文件然后看看那些不一样主要看如果是这样就直接点更新就好了,如果有 ...