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(); //把复选框选中状态传递给bCheckedif (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);//设置使用上下左右键来控制滑块,并设置滑动单位为1test_slider.SetPageSize(2);//设置使用pageup和pagedown键来控制滑块,并设置滑动单位为2return 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.mzph.cn/news/717859.shtml

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

相关文章

Angular基础---HelloWorld---Day1

文章目录 1. 创建Angular 项目2.对Angular架构的最基本了解3.创建并引用新的组件&#xff08;component&#xff09;4.对Angular架构新的认识&#xff08;多组件&#xff09;5.组件中业务逻辑文件的编辑&#xff08;ts文件&#xff09;6.标签中属性的绑定(1) ID的绑定(2) class…

String和String Builder

String和StringBuilder的区别 String类 String类代表字符串。java程序中所有字符串文字&#xff08;例如“abc”&#xff09;都被实现为此类的实例。 String类源码是用final修饰的&#xff0c;它们的值在创建后不能被更改。字符串缓冲区支持可变字符串。 String对象是不可变…

STM32 (2)

1.stm32编程模型 将C语言程序烧录到芯片中会存储在单片机的flsah存储器中&#xff0c;给芯片上电后&#xff0c;Flash中的程序会逐条进入到CPU中去执行&#xff0c;进而CPU去控制各种模块&#xff08;即外设&#xff09;去实现各种功能。 2.寄存器和寄存器编程 CPU通过控制其…

Apache POI的简单介绍与应用

介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。PS&#xff1a; 一般情况下&#xff0c;POI 都是用于操作 Excel 文件&#xff0c;如图&#xff1a; Apache POI 的应用场景&…

SQL无列名注入

SQL无列名注入 ​ 前段时间&#xff0c;队里某位大佬发了一个关于sql注入无列名的文章&#xff0c;感觉好像很有用&#xff0c;特地研究下。 关于 information_schema 数据库&#xff1a; ​ 对于这一个库&#xff0c;我所知晓的内容并不多&#xff0c;并且之前总结SQL注入的…

设计模式-桥接模式实践案例

桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;用于将抽象与实现分离&#xff0c;使它们可以独立地变化。这种模式通过提供一个桥接结构&#xff0c;可以将实现接口的实现部分和抽象层中可变化的部分分离开来。 以下是一个使用 Java 实现桥…

【数据结构】_包装类与泛型

目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 &#xff08;自动&#xff09;装箱和&#xff08;自动&#xff09;拆箱 1.2.1 装箱与拆箱 1.2.2 自动&#xff08;显式&#xff09;装箱与自动&#xff08;显式&#xff09;拆箱 1.3 valueOf()方法 2. 泛型类 2.1 泛…

【深度学习笔记】计算机视觉——目标检测和边界框

目标检测和边界框 前面的章节&#xff08;例如 sec_alexnet— sec_googlenet&#xff09;介绍了各种图像分类模型。 在图像分类任务中&#xff0c;我们假设图像中只有一个主要物体对象&#xff0c;我们只关注如何识别其类别。 然而&#xff0c;很多时候图像里有多个我们感兴趣…

某大型制造企业数字化转型规划方案(附下载)

目录 一、项目背景和目标 二、业务现状 1. 总体应用现状 2. 各模块业务问题 2.1 设计 2.2 仿真 2.3 制造 2.4 服务 2.5 管理 三、业务需求及预期效果 1. 总体业务需求 2. 各模块业务需求 2.1 设计 2.2 仿真 2.3 制造 2.4 服务 2.5 管理 四、…

在vue中对keep-alive的理解,它是如何实现的,具体缓存的是什么?

对keep-alive的理解&#xff0c;它是如何实现的&#xff0c;具体缓存的是什么&#xff1f; &#xff08;1&#xff09;keep-alive有以下三个属性&#xff1a;注意&#xff1a;keep-alive 包裹动态组件时&#xff0c;会缓存不活动的组件实例。主要流程 &#xff08;2&#xff09…

数字化转型导师坚鹏:证券公司数字化营销

证券公司数字化营销 ——借力数字化技术实现零售业务的批量化、精准化、场景化、智能化营销 课程背景&#xff1a; 很多证券公司存在以下问题&#xff1a; 不知道如何提升证券公司数字化营销能力&#xff1f; 不知道证券公司如何开展数字化营销工作&#xff1f; 不知道…

胎神游戏集第二期

延续上一期 一、海岛奇胎 #include<bits/stdc.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> using namespace std; typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD); PROCSETCONSOLEFONT SetCons…

Linux 安装pip和换源

一 配置文档 Linux和macOS&#xff1a; 全局配置&#xff1a;/etc/pip.conf 用户级配置&#xff1a;~/.pip/pip.conf 或 ~/.config/pip/pip.conf 二 下载 和 安装 # pip 安装 wget https://bootstrap.pypa.io/get-pip.py python get-pip.py 三 查看和升级 pip -Vpython -m…

GO语言学习笔记(与Java的比较学习)(十一)

协程与通道 什么是协程 一个应用程序是运行在机器上的一个进程&#xff1b;进程是一个运行在自己内存地址空间里的独立执行体。一个进程由一个或多个操作系统线程组成&#xff0c;这些线程其实是共享同一个内存地址空间的一起工作的执行体。 并行是一种通过使用多处理器以提…

Java虚拟机 - JVM

JVM的内存区域划分 JVM它其实也是一个进程,进程运行的过程中,会从操作系统中申请一些资源.内存就是其中的一种.这些内存就支撑了java程序的运行.JVM从系统中申请的一大块内存,会根据实际情况和使用用途来划分出不同的空间,这个就是区域划分.它一般分为 堆区, 栈区, 程序计数器…

springboot240基于Spring boot的名城小区物业管理系统

基于Spring boot的名城小区物业管理系统的设计与实现 摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于物业信息的管理和控制&#xff0c;采用人工登记的方式保存相关数…

InnoDB存储引擎对MVCC的实现

MVCC MVCC的目的 在搞清楚MVCC之前,我们要搞懂一个问题,MVCC到底解决的是什么问题? 我用一句话概括,那就是为了解决读-写可以一起的问题! 在我们的印象里,InnoDB可以读读并发,不能读写并发,或者写写并发 这是很正常的想法,因为如果读写并发的化,会有并发问题 而对于写写…

带压缩路径的并查集

find带压缩路径的并查集 int fa[]; void init(int _size) {for(int i0;i<_size;i){fa[i] i;} } int find(int aim) {int cur aim;while (fa[aim] ! aim){aim fa[aim];}while (fa[cur] ! cur){int tmp cur;cur fa[cur];fa[tmp] aim;}return aim; } void join(int a,in…

构建安全的REST API:OAuth2和JWT实践

引言 大家好&#xff0c;我是小黑&#xff0c;小黑在这里跟咱们聊聊&#xff0c;为什么REST API这么重要&#xff0c;同时&#xff0c;为何OAuth2和JWT在构建安全的REST API中扮演着不可或缺的角色。 想象一下&#xff0c;咱们每天都在使用的社交媒体、在线购物、银行服务等等…

file-upload-download

方式一 情况1&#xff1a; PostMapping("/download1")public ResponseEntity<byte[]> download1() throws Exception {// 下载文件目录位置FileInputStream fis new FileInputStream("C:\\Users\\wsd\\Pictures\\susu.jpg");// 一次读取bytes.leng…