CButton/CheckBox/RadioButton

// 整形转字符串
    str.Format(_T("上衣=%d\n裤子=%d\n帽子=%d\n"), m_cloths, m_plants, m_hats);

RadioButton要把多个放在一组中使用,并且把第一个的group设置为true

MFC---常用控件_c++

EditControl, ListBox

MFC---常用控件_c++_02

点击时候

文本编辑框文本操作

// 获得文本框控件
	CEdit* edit=(CEdit*)GetDlgItem(IDC_EDIT1);
	edit->GetWindowText(text);
	edit->SetWindowText(_T(""));

ListBox操作
初始化时候

// 得到ListBox控件
    CListBox* list = (CListBox*)GetDlgItem(IDC_LIST1);
    // 添加项
    list->AddString(_T("上海"));
    list->AddString(_T("深圳"));
    list->AddString(_T("北京"));
    list->AddString(_T("长沙"));
    // 设置当前选择项 
    list->SetCurSel(0);

点击时候

// 获取当前选择项编号
    int n = list->GetCurSel();
    // 获取当前选择项文本
    list->GetText(n, text);

用于向里面添加数据

//list->AddString(text);

ComboBox

Combobox与ListBox操作基本一致,只是界面显示小有区别,Combobox是下拉列表,默认不展开,只有下拉的时候才能看所有选项。

在这里插入图片描述

MFC---常用控件_List_03

下拉列表操作
初始化时候

// 获取下拉列表控件
CComboBox* list = (CComboBox*)GetDlgItem(IDC_COMBO1);
// 添加选择项
list->AddString(_T("上海"));
list->AddString(_T("深圳"));
list->AddString(_T("北京"));
list->AddString(_T("长沙"));
// 设置当前选择项
list->SetCurSel(3);

点击时候

// 获取当前选择项
int n = list->GetCurSel();
// 获取当前选择项文本
list->GetLBText(n, text);

Progress

MFC---常用控件_进度条_04

进度条操作(借助定时器)
初始化时候

// 获取进度条
	CProgressCtrl* prog = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
	// 设置进度条范围
	prog->SetRange(0, 100);
    //定义定时器
    SetTimer(TIMER_RPOG, 100, NULL);

ontime函数被触发

定时器超时响应函数
void Cdialog2Dlg::OnTimer(UINT_PTR nIDEvent)
{
    int num, low, high;
    CProgressCtrl* prog;
    switch (nIDEvent)
    {
    case TIMER_RPOG:
        // 得到进度条
        prog = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
        // 获取进度
        num = prog->GetPos();
        // 更新进度
        prog->SetPos(++num);
        // 获取进度条上下限
        prog->GetRange(low, high);
        if (num >= high)
        {
            // 进度条归零
            prog->SetPos(low);
        }
        break;
    default:
        break;
    }
    CDialogEx::OnTimer(nIDEvent);
}

Picture

加载bitmap图像
•准备1张bmp图片
•作为资源导入项目,记住ID名称,以备后用
•拖入图片组件到界面上

// 得到图片控件
CStatic* pic = (CStatic*)GetDlgItem(IDC_PIC);
// 设置控件风格
pic->ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);
CBitmap bitmap;
// 加载bitmap图片
bitmap.LoadBitmap(IDB_BITMAP1);
// 控件设置Bitmap
pic->SetBitmap(bitmap);


bitmap.Detach();

注意事项

解决办法一:不用成员变量的方式

这里的局部变量会在}之后就销毁

//准备Bitmap图片
	CBitmap bitmap;
	//加载Bitmap图片
	bitmap.LoadBitmap(IDB_BITMAP1);
	m_pic.SetBitmap(bitmap);
	bitmap.Detach();

MFC---常用控件_c++_05

解决办法二:用成员变量的方式

把bitmap这个变量变为成员变量
用成员变量的方式
.h文件

CBitmap m_bitmap;

.cpp文件

//准备Bitmap图片
//CBitmap bitmap;
//加载Bitmap图片
m_bitmap.LoadBitmap(IDB_BITMAP1);
m_pic.SetBitmap(m_bitmap);
//bitmap.Detach();

补充

与以下局部变量导致程序出错做对比
MFC—用局部变量的引用导致程序崩溃的解决办法

加载Png图片
•准备1张png图片
准备一个成员变量

CImage image;

初始化时候加载出来
双\是因为会转义

image.Load(_T("D:\\3.png"));

onPaint()的else中写

CClientDC dc(this);
CRect rect;
CStatic* m_pic = (CStatic*)GetDlgItem(IDC_PIC);
m_pic.GetWindowRect(&rect);
ScreenToClient(&rect);
image.Draw(dc, rect);

MFC---常用控件_List_06

List

CImageList m_imageList;

初始化中

// 制作图像列表
    m_imgList.Create(32, 32, ILC_COLOR32 | ILC_MASK, 2, 10);
    for (int i = 0; i < 10; i++)
    {
        HICON icon = theApp.LoadIcon(IDI_ICON1 + i);
        m_imgList.Add(icon);
    }
    
    // 设置图像列表
    m_list.SetImageList(&m_imgList, LVSIL_NORMAL);

    // 表头,多少列
    m_list.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 50);
    m_list.InsertColumn(1, _T("Name"), LVCFMT_LEFT, 100);
    m_list.InsertColumn(2, _T("Age"), LVCFMT_LEFT, 50);
    m_list.InsertColumn(3, _T("Address"), LVCFMT_LEFT, 400);

    int nItem;
    // 插入行,分2步,插入1个元素,得到ID
    nItem = m_list.InsertItem(0, _T("1"));
    // 根据ID,设置每1列的值
    m_list.SetItemText(nItem, 1, _T("Mark"));
    m_list.SetItemText(nItem, 2, _T("42"));
    m_list.SetItemText(nItem, 3, _T("Address 1"));

    nItem = m_list.InsertItem(1, _T("2"));
    m_list.SetItemText(nItem, 1, _T("Allan"));
    m_list.SetItemText(nItem, 2, _T("29"));
    m_list.SetItemText(nItem, 3, _T("Address 2"));

Tree

// 修改风格
    m_webTree.ModifyStyle(0, TVS_HASLINES | TVS_HASBUTTONS |TVS_LINESATROOT);
    // 加载图片
    HICON hIcon = theApp.LoadIcon(IDI_ICON1);
    HICON hIcon2 = theApp.LoadIcon(IDI_ICON2);
    // 创建图片列表
    m_imageList.Create(32, 32, ILC_COLOR32|ILC_MASK,2, 2);
    // 往图片列表中加入图片
    m_imageList.Add(hIcon);
    m_imageList.Add(hIcon2);
    // 树控件设置图片列表
    m_webTree.SetImageList(&m_imageList,TVSIL_NORMAL);

    // 添加根节点
    hRoot = m_webTree.InsertItem(_T("生活用品"), 0, 0);

    // 二级结点
    hSon = m_webTree.InsertItem(_T("衣服"), 1, 1, hRoot, TVI_LAST);

    // 三级结点
    hGrandson = m_webTree.InsertItem(_T("男装"), 2, 2, hSon, TVI_LAST);
    hGrandson = m_webTree.InsertItem(_T("女装"), 2, 2, hSon, TVI_LAST);
    hGrandson = m_webTree.InsertItem(_T("童装"), 2, 2, hSon, TVI_LAST);