VC之TAB 控件实例(转)

对于用惯了VBVC#的我来说,VC控件真是太麻烦了,不过有什么办法呢?许多企业还在使用,所以继续学习,咸淡算扯到这了,这里做了个最为简单的Tab Control 的使用范例。

1. 在主面板上拖放一Tab Control控件,我们这里建立其在主面板类(CTabSampleDlg)里面的成员变量m_tab

2.添加两个子对话框,将其属性设置为“childnone”。这里要注意了,添加的必须是继承自DIALOG类的对话框,而不是PropPage对话框,否则的话,子面板将不能响应用户操作。然后生成两个新类“CTabPage1 CTabPage2”

3.CTabSampleDlg类 添加两个成员变量,他们分别是CTabPage1CTabPage2类的实例。

4.CTabSampleDlg类的OnInitDialog成员函数内的适当位置添加如下代码。

BOOL CTabSampleDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
   CString strAboutMenu;
   strAboutMenu.LoadString(IDS_ABOUTBOX);
   if (!strAboutMenu.IsEmpty())
   {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
   }
}

// Set the icon for this dialog. The work does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);    // Set big icon
SetIcon(m_hIcon, FALSE);   // Set small icon
//==========================================================
//
初始化TAB
TCITEM tc1,tc2;
tc1.mask = TCIF_TEXT;
tc1.pszText = "
第一页
";
tc2.mask = TCIF_TEXT;
tc2.pszText = "
第二页";

m_tab.InsertItem(0, &tc1);
m_tab.InsertItem(1, &tc2); //
到这里只是添加了两个tab

CRect rec;
m_tab.GetClientRect(&rec);//
获得TAB控件的坐标

//
定位选项卡页的位置,这里可以根据情况自己调节偏移量
rec.bottom -= 1;
rec.left += 1;
rec.top += 20;
rec.right -= 2;

//
创建子页面
m_page1.Create(IDD_DIALOG1, GetDlgItem(IDC_TAB));
m_page2.Create(IDD_DIALOG2, GetDlgItem(IDC_TAB));
//
将子页面移动到指定的位置
m_page1.MoveWindow(&rec);
m_page2.MoveWindow(&rec);
//
显示子页面
m_page1.ShowWindow(SW_SHOW);
m_page2.ShowWindow(SW_HIDE);
//===============================================================

 

return TRUE; // return TRUE unless you set the focus to a control
}

5. 为主面板上的TabControl 控件添加 OnSelchangeTab 事件, 添加代码如下。

void CTabSampleDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
   
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;
}

http://glendong.blogbus.com/logs/54676265.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值