MFC学习 标签页与属性页及各常用控件使用

参考 http://blog.csdn.net/anye3000/article/details/6700023

CTabCtrl:

BOOL CTabTestDlg::OnInitDialog()

{

    CDialog::OnInitDialog();



    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

    //  执行此操作

    SetIcon(m_hIcon, TRUE);            // 设置大图标

    SetIcon(m_hIcon, FALSE);        // 设置小图标



    // TODO: 在此添加额外的初始化代码

    m_TabCtrl.InsertItem(0, "表一");

    m_dlgTabl1.Create(IDD_DIALOG1, &m_TabCtrl);

    //设立页面在控件中的范围

    CRect rc;

    m_TabCtrl.GetClientRect(rc);

    rc.top += 20;

    rc.bottom -= 1;

    rc.left += 1;

    rc.right -= 1;

    m_dlgTabl1.MoveWindow(rc);

    m_dlgTabl1.ShowWindow(SW_SHOW);

    m_TabCtrl.InsertItem(1, "表二");

    m_dlgTabl2.Create(IDD_DIALOG2, &m_TabCtrl);

    m_dlgTabl2.MoveWindow(rc);

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

}

在点击标签时要增加事件

void CTabTestDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)

{

    // TODO: 在此添加控件通知处理程序代码

    

    switch(m_TabCtrl.GetCurSel())

    {

        case 0:

            {

                m_dlgTabl1.ShowWindow(SW_SHOW);

                m_dlgTabl2.ShowWindow(SW_HIDE);

                break;

            }

        case 1:

            {

                m_dlgTabl1.ShowWindow(SW_HIDE);

                m_dlgTabl2.ShowWindow(SW_SHOW);

                break;

            }

        default:

            m_dlgTabl1.ShowWindow(SW_SHOW);

            m_dlgTabl2.ShowWindow(SW_HIDE);



    }

    *pResult = 0;

}

 

CPropSheet:

在设置器中添加几个PropertypePage, 分别建立类, 增加OnSetActive(必要)事件处理, OnWinzarNext事件处理

BOOL PropPage2::OnSetActive()

{

    CPropertySheet* pSheet = (CPropertySheet*)GetParent();

    pSheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);

    return CPropertyPage::OnSetActive();

}



LRESULT PropPage2::OnWizardNext()

{

    //Radio分组是以每个分组第一个radio设置属性group为true, 后面的radio不用设置, 都属于这个组, 

    //第二组的第一个radio也是设置group为true, 其它本组radrio不用设置group, 依次类推

    if(m_Sel1.GetCheck() == 0 && ((CButton*)GetDlgItem(IDC_RADIO2))->GetCheck() == 0 

        && ((CButton*)GetDlgItem(IDC_RADIO1))->GetCheck() == 0)

    {

        MessageBox("请选择数字1");

        return -1;

    }

    else if((((CButton*)GetDlgItem(IDC_RADIO4))->GetCheck() == 0) 

        && ((CButton*)GetDlgItem(IDC_RADIO5))->GetCheck() == 0)

    {

        MessageBox("请选择数字2");

        return -1;

    }

    return CPropertyPage::OnWizardNext();

}

 

 

在类视图中右击添加一个类, 选择MFC类(不是普通类), 继承选择CPropertySheet, 添加几个PropertypePage派生类成员, PropSheet构造函数加入数据成员.

 

PropSheet::PropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)

    :CPropertySheet(pszCaption, pParentWnd, iSelectPage)

{

    AddPage(&m_PropPage1);

    AddPage(&m_PropPage2);

    AddPage(&m_PropPage3);

    AddPage(&m_PropPage4);

}

 常用控件使用在附件中. 包括单选, 复选按钮, 下拉列表, 进度条,CSpinButton(点了数字加减, 或滚动条移的那种按钮), 滑动条.

 本例源码下载

另附:孙鑫MFC讲义代码下载

你可能感兴趣的:(mfc)