2024-03-03 c++

🌸 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.mfbz.cn/a/427493.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql8.0安装(zip版本)最详细

下载 https://dev.mysql.com/downloads/mysql/ 解压 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\Atools\mysql-8.0.30-winx64 # 切记此处一定要用双斜杠\\&#xff0c;单斜杠我这里会出错&#xff0c;不过看别人的教程&#xff0c;有的是单斜杠。自己…

探索数字未来:DApp钱包Defi引领新纪元

​小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 随…

AI 视频、图片修复 CodeFormer 安装 使用

一 CodeFormer 优秀的开源修复图片与视频的项目 1 下载 开源地址&#xff1a;https://github.com/sczhou/CodeFormer 下载成功&#xff1a; 2 安装 解压进入目录 安装依赖 pip install -r requirements.txt 安装完成&#xff0c;测试运行&#xff0c;报了个错误如下&#xff…

白话transformer(一):注意力机制

前面我们分篇讲述了transformer的原理&#xff0c;但是对于很多刚接触transformer的人来说可能会有一点懵&#xff0c;所以我们接下来会分三篇文章用白话的形式在将transformer 讲一遍。 前文链接 Bert基础(一)–自注意力机制 Bert基础(二)–多头注意力 Bert基础(三)–位置编…

独立游戏《星尘异变》UE5 C++程序开发日志1——项目与代码管理

写在前面&#xff1a;本日志系列将会向大家介绍在《星尘异变》这款模拟经营游戏&#xff0c;在开发时用到的与C相关的泛用代码与算法&#xff0c;主要记录UE5C与原生C的用法区别&#xff0c;以及遇到的问题和解决办法&#xff0c;因为这是我本人从ACM退役以后第一个从头开始的项…

类加载器分类

类加载器&#xff08;Class Loader&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的一个重要组件&#xff0c;负责加载Java类到内存中并使其可以被JVM执行。类加载器是Java程序的核心机制之一。 主要有一下四种类加载器&#xff1a; &#xff08;1&#xff09;启动类加…

01tire算法

01tire算法 #include<bits/stdc.h> using namespace std; #define maxn 210000 int a[maxn], ch[maxn][2], val[maxn], n, ans, tot; void insert(int x) {int now 0;for (int j 31; j > 0; j -- ){int pos ((x >> i) & 1);if (!ch[now][pos])ch[now][po…

【贪心算法】专题练习二

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;买卖股票的最佳时机&#x1f449;&…

Android Stdio Execution failed for task ‘:app:compileDebugKotlin‘ 报错解决

具体报错信息如下&#xff1a; compileDebugJavaWithJavac task (current target is 1.8) and compileDebugKotlin task (current target is 17)jvm target compatibility should be set to the same Java version.很显然&#xff0c;这是一个版本冲突问题&#xff0c;compile…

深入理解C语言:开发属于你的三子棋小游戏

三子棋 1. 前言2. 准备工作3. 使用二维数组存储下棋的数据4. 初始化棋盘为全空格5. 打印棋盘6. 玩家下棋7. 电脑下棋8. 判断输赢9. 效果展示10. 完整代码 1. 前言 大家好&#xff0c;我是努力学习游泳的鱼&#xff0c;今天我们会用C语言实现三子棋。所谓三子棋&#xff0c;就是…

分享经典、现代和前沿软件工程课程

随着信息技术的发展&#xff0c;软件已经深入到人类社会生产和生活的各个方面。软件工程是将工程化的方法运用到软件的开发、运行和维护之中&#xff0c;以达到提高软件质量&#xff0c;降低开发成本的目的。软件工程已经成为当今最活跃、最热门的学科之一。 本次软件工程MOOC课…

跟着这份指南,让你的下拉列表设计更加顺畅!

下拉列表广泛应用于UI设计中&#xff0c;可以简化界面&#xff0c;帮助用户缩小选择范围&#xff0c;减轻用户认知负担&#xff0c;防止数据输入错误。但与此同时&#xff0c;它也是一个受到用户批评的灾区。在某些情况下&#xff0c;下拉列表不仅意义不大&#xff0c;而且对用…

全新攻击面管理平台

首页大屏 内测阶段&#xff0c;免费试用一个月 有兴趣体验的师傅&#xff0c;来长亭云图极速版群里找我 py

面试经典150题【51-60】

文章目录 面试经典150题【51-60】71.简化路径155.最小栈150.逆波兰表达式求值224.基本计算器141.环形链表2.两数相加21.合并两个有序链表138.随机链表的复制19.删除链表的倒数第N个节点82.删除链表中的重复元素II 面试经典150题【51-60】 71.简化路径 先用split(“/”)分开。然…

Flutter混合栈管理方案对比

1.Google官方&#xff08;多引擎方案&#xff09; Google官方建议的方式是多引擎方案&#xff0c;即每次使用一个新的FlutterEngine来渲染Widget树&#xff0c;存在的主要问题是每个引擎都要有比较大的内存等资源消耗&#xff0c;虽然Flutter 2.0之后的FlutterEngineGroup通过在…

如何选择O2OA(翱途)开发平台的部署架构?

概述 O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]支持公有云&#xff0c;私有云和混合云部署&#xff0c;也支持复杂的网络结构下的分布式部署。本篇主要介绍O2OA(翱途)开发平台支持的部署环境以及常用的集群部署架构。 软硬件环境说明 支持的云化平台&#xff1a; 华为云…

【算法】二叉搜索树的插入、删除、转换操作

1 二叉搜索树的插入操作 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&#xff0c;可能…

卷积神经网络(CNN)原理与实现

卷积神经网络(CNN) 卷积神经网络原理卷积神经网络的数学推导卷积层反向传播算法数学推导卷积层实现代码 卷积神经网络(CNN) 卷积神经网络原理 卷积神经网络是一种用于图像、语音、自然语言等数据的深度学习模型&#xff0c;其核心思想是使用卷积操作提取输入数据的特征&…

【开源项目】经典开源项目数字孪生智慧医院

飞渡科技数字孪生医院管理平台&#xff0c;融合数字孪生、物联网IOT、无线定位等技术&#xff0c;提供病房管理、医疗管理、照明管理、停车场管理等应用&#xff0c;同时结合完善的安防系统&#xff0c;立体化、全覆盖的视频监控体系&#xff0c;实现医院数字化卓越运营以及精细…

汇编语言程序设计实验二

实验目的和要求 继续学习使用DEBUG程序的各种命令。利用DEBUG学习了解计算机取指令、执行指令的工作过程。 掌握8086/8088基本指令的使用方法和功能。 实验环境 DOSBox 0.74 实验内容与过程 1&#xff0e; 按照下列给定步骤完成求累加和程序: 程序: MOV BX,1000MOV C…