CButton/CheckBox/RadioButton
// 整形转字符串
str.Format(_T("上衣=%d\n裤子=%d\n帽子=%d\n"), m_cloths, m_plants, m_hats);
RadioButton要把多个放在一组中使用,并且把第一个的group设置为true
EditControl, ListBox
点击时候
文本编辑框文本操作
// 获得文本框控件
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是下拉列表,默认不展开,只有下拉的时候才能看所有选项。
在这里插入图片描述
下拉列表操作
初始化时候
// 获取下拉列表控件
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
进度条操作(借助定时器)
初始化时候
// 获取进度条
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();
解决办法二:用成员变量的方式
把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);
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);