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

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

  • 相关阅读:
    poj 1579(动态规划初探之记忆化搜索)
    hdu 1133(卡特兰数变形)
    CodeForces 625A Guest From the Past
    CodeForces 625D Finals in arithmetic
    CDOJ 1268 Open the lightings
    HDU 4008 Parent and son
    HDU 4044 GeoDefense
    HDU 4169 UVALive 5741 Wealthy Family
    HDU 3452 Bonsai
    HDU 3586 Information Disturbing
  • 原文地址:https://www.cnblogs.com/MATU/p/3783694.html
Copyright © 2011-2022 走看看