首页 > 其他分享 >MFC---常用控件(下)(列表控件、树控件、标签控件)

MFC---常用控件(下)(列表控件、树控件、标签控件)

时间:2023-10-29 13:06:23浏览次数:32  
标签:控件 MFC TEXT list 列表 --- treeCtrl icon


列表控件 CListCtrl

MFC---常用控件(下)(列表控件、树控件、标签控件)_mfc

常用属性设置:view -> Report(报表方式)

常用接口

MFC---常用控件(下)(列表控件、树控件、标签控件)_c++_02

关联控件变量后,测试接口:

MFC---常用控件(下)(列表控件、树控件、标签控件)_mfc_03

//设置风格样式
	//LVS_EX_GRIDLINES 网格
	//LVS_EX_FULLROWSELECT 选中整行
	m_list.SetExtendedStyle(m_list.GetExtendedStyle()
		| LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

	//插入标题
	CString head[] = { TEXT("姓名"), TEXT("年龄"), TEXT("性别") };

	//插入列
	m_list.InsertColumn(0, head[0], LVCFMT_LEFT, 100);
	m_list.InsertColumn(1, head[1], LVCFMT_LEFT, 100);
	m_list.InsertColumn(2, head[2], LVCFMT_LEFT, 100);

	//插入正文内容,先确定行,再确定列
	for (int i = 0; i < 10; i++)
	{
		CString str;
		str.Format(TEXT("张三_%d"), i );

		//确定行
		m_list.InsertItem(i, str);

		//设置列
		int j = 0;
		m_list.SetItemText(i, ++j, TEXT("男"));
		m_list.SetItemText(i, ++j, TEXT("23"));
	}

程序效果图:

MFC---常用控件(下)(列表控件、树控件、标签控件)_ico_04

树控件 CTreeCtrl

MFC---常用控件(下)(列表控件、树控件、标签控件)_mfc_05

常用属性设置

MFC---常用控件(下)(列表控件、树控件、标签控件)_ico_06

常用接口

MFC---常用控件(下)(列表控件、树控件、标签控件)_c++_07

1)关联控件变量

MFC---常用控件(下)(列表控件、树控件、标签控件)_c++_08

2)添加图标资源(icon)

a)把ico资源文件放在项目res文件夹中

MFC---常用控件(下)(列表控件、树控件、标签控件)_mfc_09

b)资源视图 -> Icon -> 添加资源:

MFC---常用控件(下)(列表控件、树控件、标签控件)_List_10

c)导入ico文件

MFC---常用控件(下)(列表控件、树控件、标签控件)_List_11


MFC---常用控件(下)(列表控件、树控件、标签控件)_ico_12

3)通过代码加载图标

//加载图标
HICON icon[3];
icon[0] = AfxGetApp()->LoadIconW(IDI_ICON1);
icon[1] = AfxGetApp()->LoadIconW(IDI_ICON2);
icon[2] = AfxGetApp()->LoadIconW(IDI_ICON3);

4)创建图像列表

a) .h 文件类中定义图形列表(CImageList)对象

CImageList m_imageList; //图像列表

b) OnInitDialog()函数中完成图像列表的创建、图标的追加

//图像列表,程序完毕不能释放, 创建
//30, 30: 图片的宽度和高度
//ILC_COLOR32:样式
// 3, 3: 有多少图片写多少
m_imageList.Create(30, 30, ILC_COLOR32, 3, 3);

//给图像列表添加图片
for (int i = 0; i < 3; i++)
{
	//图片列表加载图标
	m_imageList.Add(icon[i]);
}

5)树控件的相应操作

//树控件设置图片列表
m_treeCtrl.SetImageList(&m_imageList, TVSIL_NORMAL);

//给树创建节点
//根节点,父节点,子节点
HTREEITEM root = m_treeCtrl.InsertItem(TEXT(“中国”), 0, 0, NULL);
HTREEITEM fathter = m_treeCtrl.InsertItem(TEXT(“北京”), 1, 1, root);
HTREEITEM son = m_treeCtrl.InsertItem(TEXT(“海淀”), 2, 2, fathter);

//设置某个节点被选中
m_treeCtrl.SelectItem(fathter);

程序效果图:

MFC---常用控件(下)(列表控件、树控件、标签控件)_ico_13

树控件常用事件为:TVN_SELCHANGED,当选择某个节点时,自动触发此事件。

MFC---常用控件(下)(列表控件、树控件、标签控件)_控件_14

void CMy01_TreeCtrlDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	// TODO:  在此添加控件通知处理程序代码
	*pResult = 0;

	HTREEITEM selItem;
	//获得选择项
	selItem = m_treeCtrl.GetSelectedItem();
	//获取选中的内容
	CString cs = m_treeCtrl.GetItemText(selItem);
	MessageBox(cs);
}

标签控件 CTabCtrl

1)在ui工具箱拖放 Tab Control

MFC---常用控件(下)(列表控件、树控件、标签控件)_c++_15

2)把 TabSheet.h和TabSheet.cpp 放在项目文件同级目录,并且添加到工程目录中

MFC---常用控件(下)(列表控件、树控件、标签控件)_ico_16

3)给ui上 Tab Control 关联Control类型(CTabSheet)

MFC---常用控件(下)(列表控件、树控件、标签控件)_List_17

4)添加对话框
a) 资源视图 -> Dialog -> 右击 -> 插入 Dialog
b) 设置相应属性:
Style -> Child (子窗口)
Border -> None (无边框)
c) 自定义类:点击对话框模板 -> 右击 -> 添加类(MyDlg1、MyDlg2)
d) 主对话框类中, 定义自定义类对象,需要相应头文件

MFC---常用控件(下)(列表控件、树控件、标签控件)_ico_18

e) 主对话框类中 OnInitDialog() 做初始化工作

//给tab控件添加对话框
//IDD_DIALOG1为dlg1资源ID
	m_tabCtrl.AddPage(TEXT("系统管理"), &dlg1, IDD_DIALOG1); 

//IDD_DIALOG1为dlg2资源ID
	m_tabCtrl.AddPage(TEXT("系统设置"), &dlg2, IDD_DIALOG2); 

	//显示tab控件
	m_tabCtrl.Show();

程序效果图:

MFC---常用控件(下)(列表控件、树控件、标签控件)_ico_19


标签:控件,MFC,TEXT,list,列表,---,treeCtrl,icon
From: https://blog.51cto.com/u_15305087/8079864

相关文章

  • C++---数据结构---队列(queue)
    queue容器queue基本概念概念:Queue是一种先进先出(FirstInFirstOut,FIFO)的数据结构,它有两个出口队列容器允许从一端新增元素,从另一端移除元素队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为队列中进数据称为—入队push队列中出数据称为—出队popque......
  • 027-第三代软件开发_ComboBox
    第三代软件开发_ComboBox文章目录第三代软件开发_ComboBox项目介绍ComboBox实际使用关键字:Qt、Qml、ComboBox、delegate、Connections项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-ObjectLanguage)和C++的强大功能,旨在开发出色的用户界面和高性能的......
  • TouchGFX界面开发 | 图像控件应用示例
    图像控件应用示例TouchGFX中的图像会绘制关联图像文件中的像素数据。使用图像文件前,必须将其导入到项目中。TouchGFXDesigner内置了五种类型的图像部件:固定图像:图像大小是由关联的图像文件定义的,不能在运行时改动。若要将图像显示为不同大小,需调整导入图像的大小缩放图像:能够绘制......
  • [量化投资-学习笔记002]Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方
    MA均线时最基本的技术指标,也是最简单,最不常用的(通常使用EMA、SMA)。以下用两种不同的计算方法和两种不同的画图方法进行展示和说明。MA均线指标公式MA(N)=(C1+C2+C3+…+CN)/N目录方式一1.SQL直接查询均值2.使用pyplot进行绘图3.使用Grafana绘图方式二1.使用Python计......
  • 807-812 Helm 实战 8.7-8.12
    8.10自定义Chart实站8.10.1创建chart包#helmcreatek8syydsCreatingk8syyds8.10.2自定义template模板文件删除默认模板文件#cdk8syyds/[root@master-1-230k8syyds]#ll总用量8drwxr-xr-x2rootroot610月2823:14charts-rw-r--r--1rootroot11431......
  • python---数列内元素正倒相加实例
    a=list([1,21,5,3,1,23])b=list([7,4,6,3,2,1])x=int(input("请输入想从第几个数开始:"))y=int(input("请输入想到第几个数结束:"))c=[0,0,0,0,0,0]m=input("想要正着加吗?(T/F)")foriinrange(x-1,y):ifm=="T":c=a[i]+b[i]......
  • while语句练习(打印1-10)(加入continue)
    #include<stdio.h>intmain(){  inti=1;  //i从1开始  while(i<=10)//i小于等于10  {    i++;  //由于i++,所以从i=2开始,到11结束    if(i==5)    continue;//continue-继续,达到5时该代码从while重新循环    pri......
  • Mysql--存储过程
    Mysql--存储过程介绍存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。特点......
  • 【题解】P9753 [CSP-S 2023] 消消乐(字符串哈希,DP)
    【题解】P9753[CSP-S2023]消消乐不知道考场脑子是抽了还是有病,全程都不知道在放什么屁。特别鸣谢:@dbxxx给我讲解了解法一的满分做法,并让我对哈希有了更加深刻的认识;@Daidly给我讲解了解法二。题目链接P9753[CSP-S2023]消消乐题意概述给定一个长度为\(n\)的只含小......
  • 2023-2024-1 20231308 《计算机基础与程序设计》第五周学习总结
    2023-2024-120231308《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第五周作业这个作业的目标<关于机器语言与汇编语言,pep9的相关应用,循坏算法的了解......