zoukankan      html  css  js  c++  java
  • TabControl控件用法图解[转载]

    1.创建一个基于对话框的MFC工程,名称设置为“My”。

    2.在自动生成的对话框模板中,删除“TODO: Place dialog controls here.”静态文本框、“OK”按钮和“Cancel”按钮。

    在对话框资源上从工具箱中添加上一个TabControl控件;

     

    3. 根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl

    4. 创建两个新的对话框其属性作如下修改:

    Border:none //边界为空,这样它就没了标题栏

    Style :Child // 这样这个模板就可以当作另一个窗口的子窗口了。

    Title Bar:False

    在上面加一些控件什么的,具体操作跟普通对话框没有区别。
    完成后从这两个对话框模板生成新的对话框类CDlg1,CDlg2。

     

    5. 在主对话框头文件CMydlg.h中 #include "Dlg1.h"、#include "Dlg2.h",

    并为新添加进来的2个类增加2个变量:
     CDlg1 page1;
     CDlg2 page2;

    6. 在主对话框的OnInitDialog()函数中添加如下类似的代码:

     1     // TODO: 在此添加额外的初始化代码
     2     TCITEM item;
     3 
     4     item.mask = TCIF_TEXT;
     5     item.pszText =_T( "第一页"); 
     6     m_tabctrl.InsertItem (0,&item);      // 插入第一个标签
     7 
     8     item.pszText =_T("第二页");
     9     m_tabctrl.InsertItem (1,&item);     // 插入第二个标签
    10 
    11     page1.Create (IDD_DIALOG1,&m_tabctrl);     // 创建第一个标签
    12     page2.Create (IDD_DIALOG2,&m_tabctrl);    // 创建第二个标签
    13 
    14     CRect rect;
    15     m_tabctrl.GetClientRect(&rect);  // 获取标签控件客户区Rect
    16      // 调整tabRect,使其覆盖范围适合放置标签页
    17     rect.top+=20;
    18     rect.bottom-=4;
    19     rect.left+=4;
    20     rect.right-=4;
    21 
    22     page1.MoveWindow(&rect);
    23     page2.MoveWindow(&rect);
    24     page1.ShowWindow(TRUE);
    25     m_tabctrl.SetCurSel(0);
    26 
    27     return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    View Code

    7. 在主对话中为标签控件添加一个标签选择改变(TCN_SELCHANGE)的控件通知消息,以便在用户选择标签时通知主对话框。在主对话框的编辑界面右击标签控件,选择添加一个事件处理程序,选择可以完成这个操作

    8.在事件处理中添加如下代码,如下例:

     1 void CMyDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
     2 {
     3     // TODO: Add your control notification handler code here
     4     int CurSel;
     5     CurSel = m_tabctrl.GetCurSel();  //获得选中的页签
     6     switch(CurSel)
     7     { 
     8     case 0:
     9         {
    10             /// 如果选中第一个页签时,显示第一页,隐藏第二页
    11             page1.ShowWindow(TRUE);
    12             page2.ShowWindow(FALSE);
    13         }
    14         break;
    15     case 1:
    16         {
    17             /// 如果选中第二个页签时,显示第二页,隐藏第一页
    18             page1.ShowWindow(FALSE);
    19             page2.ShowWindow(TRUE);
    20         }
    21         break;
    22     }
    23     *pResult = 0;
    24 }
    View Code

    注意: 为了不使显示的子对话框覆盖标签控件的显示,所以要获得标签控件的尺寸然后设置各页面的尺寸。

  • 相关阅读:
    html基础之html标签
    unittest框架(二)单元测试及测试报告
    unittest框架(一)用例管理
    python实现http接口自动化测试(完善版)
    python学习笔记(二十九)为什么python的多线程不能利用多核CPU
    深入理解JVM(三)——配置参数
    深入理解JVM(二)——内存模型、可见性、指令重排序
    深入理解JVM(一)——基本原理
    做了两款数据库监控工具,打算在近期开源
    电商系统中的商品模型的分析与设计—续
  • 原文地址:https://www.cnblogs.com/MATU/p/3783694.html
Copyright © 2011-2022 走看看