2024-03-03 c++

news2024/12/20 7:01:44

🌸 MFC进度条控件 | Progress Control

1。新建MFC项目(基于对话框、静态库)
2。添加控件,删除初始的3个多余控件
加1个progress control,修改其marquee为true,添加变量:变量名为test_progress。
在这里插入图片描述
加2个按钮,修改caption为START,STOP。双击按钮添加程序(或者右键START按钮,添加事件处理程序)
在这里插入图片描述

按钮控件可以接收的消息类型包括:
在这里插入图片描述
☑ BN_CLICKED 当用户点击按钮时发送的消息,单击。
☑ BN_DUBLECLICKED 当用户点击按钮时发送的消息,双击。
☑ BN_KILLFOCUS 按钮失去了输入焦点。
☑ BN_SETFOCUS 钮获得输入焦点。
☑ BCN_DROPDOWN
在这里插入图片描述
☑ BCN_HOTITEMCHANGE 高亮条目被改变。当鼠标进入或离开此按钮空间区域时发生该事件消息。
☑ NM_GETCUSTOMSFLITRECT
☑ NM_CUSTOMDRAW
☑ NM_THEMECHANCED 主题被改变。

3。添加代码

双击按钮1(按钮1 start,2 stop),添加代码:

void CMFCApplication1Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	test_progress.ShowWindow(true);/*进度条的可见性true*/
	//test_progress.ModifyStyle(NULL, WS_VISIBLE);
}

同理添加按钮2的代码

void CMFCApplication1Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	test_progress.ShowWindow(false);/*进度条的可见性false*/
	//test_progress.ShowWindow(true);/*进度条可见*/
	test_progress.ModifyStyle(WS_VISIBLE, NULL);
}

进度条的代码

BOOL CMFCApplication9Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 将“关于...”菜单项添加到系统菜单中。
	
	/*...*/
	// TODO: 在此添加额外的初始化代码
	test_progress.SetMarquee(true, 1000);//设置进度条的速度,数值越大移动越慢
	
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

在这里插入图片描述

4。运行
运行结果:
在这里插入图片描述
在这里插入图片描述


🌸 MFC选择框控件 | Check Box

其他同上,加一个check box控件,修改caption为显示进度条
双击check box,添加代码

void CMFCApplication2Dlg::OnBnClickedCheck1()
{
	// TODO: 在此添加控件通知处理程序代码
	BOOL bChecked = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck(); //把复选框选中状态传递给bChecked
	if (bChecked) //复选框被选中
		test_progress.ModifyStyle(NULL, WS_VISIBLE);//进度条可见
	else //复选框未被选中
		test_progress.ModifyStyle(WS_VISIBLE, NULL);//进度条不可见
	Invalidate(); //重绘窗口
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🌸 MFC滑动块控件 | Slider Control

1。新建MFC项目(基于对话框、静态库)
2。添加控件,删除初始的3个多余控件
加1个static text
加1个滑动块slider control,添加变量test_slider
3。双击滑块添加代码

void CMFCApplication7Dlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	int pos = test_slider.GetPos();//获取当前的位置
	CString cstr;
	cstr.Format(_T("%d"), pos);//转换为字符串
	SetDlgItemText(IDC_STATIC, cstr);//设置静态文本框显示的内容

	*pResult = 0;
}
// CMFCApplication7Dlg 消息处理程序

BOOL CMFCApplication7Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 将“关于...”菜单项添加到系统菜单中。

	/*....*/

	// TODO: 在此添加额外的初始化代码
	test_slider.SetRange(0, 10);/*滑动块的范围*/
	test_slider.SetPos(5);//设置当前的位置
	test_slider.SetLineSize(1);//设置使用上下左右键来控制滑块,并设置滑动单位为1
	test_slider.SetPageSize(2);//设置使用pageup和pagedown键来控制滑块,并设置滑动单位为2

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

4。运行
运行结果:
在这里插入图片描述


⌨ MFC滑动块控件 | 调色 eg

1。新建MFC项目(基于对话框、静态库)
2。添加控件,删除初始的3个多余控件
加4个edit control,添加变量test_Rvalue、test_Gvalue、test_Bvalue、test_color
加3个滑动块slider control,添加变量test_R、test_G、test_B
在这里插入图片描述
3。OnInitDialog()添加代码

// TODO: 在此添加额外的初始化代码
	test_R.SetRange(0, 255);
	test_G.SetRange(0, 255);
	test_B.SetRange(0, 255);
	test_color = RGB(0, 0, 0);

双击滑块1添加代码

void CMFCApplication10Dlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	test_Rvalue = test_R.GetPos();
	CString cstr;
	cstr.Format(_T("%d"), test_Rvalue);//转换为字符串
	SetDlgItemText(IDC_EDIT1, cstr);//设置静态文本框显示的内容

	COLORREF test_color1 = RGB(test_R.GetPos(), test_G.GetPos(), test_B.GetPos());
	CString colorstr;
	colorstr.Format(_T("%d"), test_color1);//转换为字符串
	SetDlgItemText(IDC_EDIT4, colorstr);//设置静态文本框显示的内容

	*pResult = 0;
}

在这里插入图片描述


2、3同理

void CMFCApplication9Dlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	//UpdateData(TRUE);
	test_Rvalue = test_R.GetPos();
	CString cstr;
	cstr.Format(_T("%d"), test_Rvalue);//转换为字符串
	SetDlgItemText(IDC_EDIT1, cstr);//设置静态文本框显示的内容

	COLORREF test_color1 = RGB(test_R.GetPos(), test_G.GetPos(), test_B.GetPos());
	CString colorstr;
	colorstr.Format(_T("%d"), test_color1);//转换为字符串
	SetDlgItemText(IDC_EDIT4, colorstr);//设置静态文本框显示的内容

	*pResult = 0;
}


void CMFCApplication9Dlg::OnNMCustomdrawSlider2(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	//UpdateData(TRUE);
	test_Gvalue = test_G.GetPos();
	CString cstr;
	cstr.Format(_T("%d"), test_Gvalue);//转换为字符串
	SetDlgItemText(IDC_EDIT2, cstr);//设置静态文本框显示的内容

	COLORREF test_color1 = RGB(test_R.GetPos(), test_G.GetPos(), test_B.GetPos());
	CString colorstr;
	colorstr.Format(_T("%d"), test_color1);//转换为字符串
	SetDlgItemText(IDC_EDIT4, colorstr);//设置静态文本框显示的内容

	*pResult = 0;
}


void CMFCApplication9Dlg::OnNMCustomdrawSlider3(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	//UpdateData(TRUE);
	test_Bvalue = test_B.GetPos();
	CString cstr;
	cstr.Format(_T("%d"), test_Bvalue);//转换为字符串
	SetDlgItemText(IDC_EDIT3, cstr);//设置静态文本框显示的内容

	COLORREF test_color1 = RGB(test_R.GetPos(), test_G.GetPos(), test_B.GetPos());
	CString colorstr;
	colorstr.Format(_T("%d"), test_color1);//转换为字符串
	SetDlgItemText(IDC_EDIT4, colorstr);//设置静态文本框显示的内容

	*pResult = 0;
}

4。运行
运行结果:
在这里插入图片描述


🌸 MFC进度条控件 | 定时器控制进度

1。新建MFC项目(基于对话框、静态库)
2。添加控件,删除初始的3个多余控件
加1个progress control,修改其marquee为true,添加变量:变量名为test_progress。
加2个按钮,修改caption为START,STOP。

3。添加代码
在这里插入图片描述
右键Dlg — 属性 — 消息 — VM_TIMER — ADD OnTimer

自动在类的消息映射表中添加了消息映射:
在这里插入图片描述
与一个刚新建的mfc项目的MESSAGE MAP对比:
刚新建的mfc项目的MESSAGE MAP

在打开的函数中添加代码:

void CMFCApplication13Dlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	switch (nIDEvent)
	{
	case 1:
		if (test_progress.GetPos() < 100)
		{
			test_progress.SetPos(test_progress.GetPos() + 1);
		}
		else {
			test_progress.SetPos(0);
		}
		break;
	default:
		break;
	}
	
	CDialogEx::OnTimer(nIDEvent);
}

双击按钮1(按钮1 start,2 stop),添加代码:

void CMFCApplication13Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	SetTimer(1, 1000, NULL);//第一个参数可以自己设置是定时器的标号,第二个是定时时间(ms)。启动定时器1,每隔1s刷新一次
}

同理添加按钮2的代码

void CMFCApplication13Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	KillTimer(1); //关定时器1
}

4。运行
运行结果:
在这里插入图片描述
按停止后再次按开始按钮,进度条从停止的地方再次开始前移。


MFC进度条控件 | 线程控制进度 …

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1487830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

乡村教师的待遇会比城里的好吗

每次提到乡村教师&#xff0c;我们总会联想到那些坚守在偏远山区的教育工作者&#xff0c;他们默默无闻&#xff0c;为了乡村的孩子们奉献着自己的青春和热血。那么&#xff0c;乡村教师的待遇究竟如何呢&#xff1f;是否真的如外界所传闻的那般&#xff0c;比城里的教师还要好…

ip https证书360元买一年送一月

随着互联网的发展&#xff0c;不论是用户还是开发者&#xff0c;都越来越重视互联网环境的安全性。IP https证书是一种网络安全协议&#xff0c;用于保护网络通信的安全性和机密性。IP https数字证书是CA认证机构为只有公网IP地址&#xff0c;没有域名的站点颁发的数字证书&…

华为HarmnyOS TypeScript基础语法快速入门

华为HarmnyOS TypeScript基础语法快速入门 一、JavaScript、TypeScript、ArkTS二、TypeScript基础语法1. 基础类型2. 条件语句3. 函数4. 类5. 模块6. 迭代器 一、JavaScript、TypeScript、ArkTS ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&am…

信钰证券:四川黄金超50亿元解禁,紫金矿业等解禁股东浮盈超200%

本周A股限售股解禁规划不到400亿元&#xff0c;环比下降。 除掉新上市公司&#xff0c;本周共有43家公司限售股解禁&#xff0c;解禁数量28.91亿股&#xff0c;以最新收盘价计算&#xff08;下同&#xff09;&#xff0c;解禁市值387.66亿元。 其间&#xff0c;解禁市值超越1…

MASS/MM17批量复制物料描述

需求&#xff1a; 批量将日文环境中的物料描述复制到英文环境。 实现&#xff1a; 1.将日文环境下的物料描述下载至本地excel。 2.新建EXCEL&#xff0c;添加如下标题列&#xff0c;并将第一步下载下来的内容粘贴至对应的列&#xff0c;MANDT改为实际要更新的客户端&#xf…

基于Python的单词抽取测试工具

一、引言 在语言学习的过程中&#xff0c;单词量的多少是衡量一个人英语水平的重要指标。而如何快速扩充词汇量&#xff0c;掌握单词的汉语意思是重多师生的痛点和难点。为了帮助学习者有效地扩展词汇&#xff0c;巩固学习成果&#xff0c;我们在ChatGPT-4.0的帮助下&#xff…

Cookie和session 及Web相关工具

一 Cookie &#xff08;一&#xff09;介绍 Cookie 又称为"小甜饼”。类型为"小型文本文件”&#xff0c;指某些网站为了辨别用户身份而储存在用户本地终端&#xff08;Client Side&#xff09;上的数据&#xff08;通常经过加密&#xff09;。由网景公司的前雇员…

深入了解 Android 中的 FrameLayout 布局

FrameLayout 是 Android 中常用的布局之一&#xff0c;它允许子视图堆叠在一起&#xff0c;可以在不同位置放置子视图。在这篇博客中&#xff0c;我们将详细介绍 FrameLayout 的属性及其作用。 <FrameLayout xmlns:android"http://schemas.android.com/apk/res/androi…

机器学习-面经(part4、决策树)

7. 决策树 7.1 ID算法 核心是在决策树各个节点上应用信息增益准则选择特征,递归的构建决策树。 具体方法是:从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的调用以上方法,构建…

2023第十届GIAC全球互联网架构大会:洞察未来互联网架构的革新与突破(附大会核心PPT下载)

随着互联网的迅猛发展&#xff0c;其底层架构的演进与革新成为了推动全球数字化进程的关键力量。2023年第十届GIAC全球互联网架构大会如期而至&#xff0c;汇聚了全球互联网架构领域的顶尖专家、学者、企业领袖和创新者&#xff0c;共同探讨和展望互联网架构的未来发展趋势。本…

成都直播基地:势必打造开放、自由、灵活、个性化的数字直播空间

为了进一步推动直播经济的发展&#xff0c;成都天府新区迎来了一个好消息——天府锋巢直播产业基地正式落地科学城。这一成都规模最大的直播基地一经成立便为成都直播行业打造出一个开放、自由、灵活、个性化的数字直播空间&#xff0c;引领天府新区直播经济腾飞。 天府锋巢直播…

C++_红黑树

目录 1、红黑树的规则 2、红黑树节点的定义 3、红黑树插入节点的调整操作 3.1 情况一 3.2 情况二 3.3 情况三 4、红黑树的实现 结语 前言&#xff1a; 在C中&#xff0c;红黑树是二叉搜索树的另一种优化版本&#xff0c;他与AVL树的区别在于保持树的平衡方式不同&…

STM32CubeMX实战教程: TIM6、TIM7 - 基本定时器

基本定时器的作用 基本定时器&#xff0c;主要用于实现定时和计数功能。作用包括&#xff1a; 定时功能&#xff1a;可以产生周期性的中断&#xff0c;用于实现定时任务。例如&#xff0c;可以设置一个定时器每隔一定时间&#xff08;如1秒&#xff09;产生一次中断&#xff0…

状态码转文字!!!(表格数字转文字)

1、应用场景&#xff1a;在我们的数据库表中经常会有status这个字段&#xff0c;这个字段经常表示此类商品的状态&#xff0c;例如&#xff1a;0->删除&#xff0c;1->上架&#xff0c;0->下架&#xff0c;等等。 2、我们返回给前端数据时&#xff0c;如果在页面显示0…

【JavaWeb】

Javaweb 数据库相关概念MySQL数据库MySQL数据模型SQLDDL--操作数据库图形化客户端工具DML--操作数据DQL数据库约束 数据库设计多表查询事务 数据库相关概念 数据库 存储数据的仓库&#xff0c;数据是有组织的进行存储 英文&#xff1a;DataBase&#xff0c;简称DB 数据库管理系…

高维中介数据:基于交替方向乘子法(ADMM)的高维度单模态中介模型的参数估计(入门+实操)

全文摘要 用于高维度单模态中介模型的参数估计&#xff0c;采用交替方向乘子法&#xff08;ADMM&#xff09;进行计算。该包提供了确切独立筛选&#xff08;SIS&#xff09;功能来提高中介效应的敏感性和特异性&#xff0c;并支持Lasso、弹性网络、路径Lasso和网络约束惩罚等不…

详解:npm升级到pnpm对比优化点!!

npm3之前 依赖树层级过深&#xff0c;导致依赖路径过长并且相同依赖模块会被重复安装,占用电脑磁盘空间 npm3之后 修改为扁平化处理 算法复杂存在多项目间依赖相同副本的情况导致没有明确被依赖的包也可以直接引用&#xff0c;管理复杂 pnpm node_modules改成非扁平化结构&a…

uni-grid-item在小程序和APP中for循环不生效

<uni-grid-item v-for"(item, index) in list" :key"index"></uni-grid-item> 如上图类型的代码在H5是可以正常生效的 但是在小程序和APP中不生效&#xff0c;我也没有搜索到答案&#xff0c;但是我最后一个格子是固定的&#xff0c;我发现是…

ubuntu基础操作(1)-个人笔记

搜狗输入法Linux官网-首页搜狗输入法for linux—支持全拼、简拼、模糊音、云输入、皮肤、中英混输https://pinyin.sogou.com/linux 1.关闭sudo密码&#xff1a; 终端&#xff08;ctrl alt t&#xff09;输入 sudo visudo 打开visudo 找到 %sudo ALL(ALL:ALL) ALL 这一行…

【go从入门到精通】go基本类型和运算符用法

大家好&#xff0c;这是我给大家准备的新的一期专栏&#xff0c;专门讲golang&#xff0c;从入门到精通各种框架和中间件&#xff0c;工具类库&#xff0c;希望对go有兴趣的同学可以订阅此专栏。 --------------------------------------------------------------------------…