MFC-三个基本控件EditControl、CheckBoxControl以及ComBoxControl

MFC中三个最基本的控件的介绍,它们分别是:EditControl、CheckBoxControl以及ComBoxControl。

1. EditControl

实现的效果如下所示:
MFC-三个基本控件EditControl、CheckBoxControl以及ComBoxControl_第1张图片
关键代码如下:
点击统计按钮的代码

void CEditDemoDlg::OnBnClickedBtnCount()
{
    CString strInput;
    if (0 == GetDlgItemTextW(IDC_EDIT_INPUT, strInput))
    {
        SetDlgItemTextW(IDC_OUTPUT, L"获取统计字数失败!");
        return;
    }
    CString strOtput;
    strOtput.Format(L"%d", strInput.GetLength());
    SetDlgItemTextW(IDC_OUTPUT, strOtput);
}

2.CheckBoxControl

实现的效果如下所示:
MFC-三个基本控件EditControl、CheckBoxControl以及ComBoxControl_第2张图片
关键代码
我们需要在对话框上面通过类向导添加一个WM_ERASEBKGND的消息,然后添加代码如下:

BOOL CCheckBoxDemoDlg::OnEraseBkgnd(CDC* pDC)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    BOOL bRet = CDialogEx::OnEraseBkgnd(pDC);
    int nRed, nGreen, nBlue;
    nRed = m_checkRed.GetCheck() ? 255 : 0;
    nGreen = m_checkGreen.GetCheck() ? 255 : 0;
    nBlue = m_checkBlue.GetCheck() ? 255 : 0;

    COLORREF clrColor = RGB(nRed, nGreen, nBlue);

    CBrush brush;
    brush.CreateSolidBrush(clrColor);
    CBrush *pOldBrush = pDC->SelectObject(&brush);
    RECT rect = { 30, 5, 230, 205 };
    if (((CButton *)GetDlgItem(IDC_RADIO_RECT))->GetCheck())
    {
        pDC->Rectangle(&rect);
    }
    else
    {
        pDC->Ellipse(&rect);
    }

    return bRet;
}

下面的五个按钮双击之后,添加相同的一句代码即可:

void CCheckBoxDemoDlg::OnBnClickedCheckRed()
{
    Invalidate(TRUE);
}


void CCheckBoxDemoDlg::OnBnClickedCheckGreen()
{
    Invalidate(TRUE);
}


void CCheckBoxDemoDlg::OnBnClickedCheckBlue()
{
    Invalidate(TRUE);
}


void CCheckBoxDemoDlg::OnBnClickedRadioRect()
{
    Invalidate(TRUE);
}


void CCheckBoxDemoDlg::OnBnClickedRadioRound()
{
    Invalidate(TRUE);
}

ComBoxControl

实现的效果如下所示:
MFC-三个基本控件EditControl、CheckBoxControl以及ComBoxControl_第3张图片

主要代码如下:

void CComboxDemoDlg::OnBnClickedBtnAdd()
{
    CString strInput;
    if (GetDlgItemTextW(IDC_EDIT_INPUT, strInput) != 0)
    {
        int nIndex= m_comboxDemo.AddString(strInput);
        m_comboxDemo.SetCurSel(nIndex);
        nIndex = m_listDemo.AddString(strInput);
        m_listDemo.SetCurSel(nIndex);
    }
}


void CComboxDemoDlg::OnBnClickedBtnDelete()
{
    int nIndex = m_comboxDemo.GetCurSel();

    if (-1 < nIndex)
    {
        m_comboxDemo.DeleteString(nIndex);
        if (nIndex <= m_comboxDemo.GetCount())
        {
            if (nIndex > 0)
            {
                m_comboxDemo.SetCurSel(nIndex-1);
            }
            else
            {
                m_comboxDemo.SetCurSel(0);
            }
        }

    }
    else
    {
        MessageBoxW(L"未选中待删除的项!");
    }
    nIndex = m_listDemo.GetCurSel();
    if (-1 < nIndex)
    {
        m_listDemo.DeleteString(nIndex);
        if (nIndex <= m_listDemo.GetCount())
        {
            if (nIndex > 0)
            {
                m_listDemo.SetCurSel(nIndex-1);
            }
            else
            {
                m_listDemo.SetCurSel(0);
            }
        }
    }
    else
    {
        MessageBoxW(L"未选中待删除的项!");
    }
}

本文主要是想说明MFC的一些基本功能,没有做太多详细的说明,比如控件绑定的变量名等并没有做说明!如有错误,请批评指正!

你可能感兴趣的:(MFC)