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.hqwc.cn/news/508370.html

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

相关文章

如何开好一家汽车美容店,汽车美容保养与装饰教学

一、教程描述 本套教程共由17张VCD组合而成&#xff0c;教程内容主要包括&#xff1a;美容店的设立和管理&#xff0c;汽车系统与内部结构&#xff0c;汽车美容工具与美容设备&#xff0c;美容用品的选择与使用&#xff0c;车身打蜡镀膜与内外清洁&#xff0c;车身抛光与漆面处…

jmeter 命令行用法、文件解读、生成报告

当前版本&#xff1a; jmeter 5.6.3mysql 5.7.39 简介 本篇文章主要介绍如何配置jmeter使用内存&#xff0c;出现的一些异常如何处理&#xff0c;以及详细描述运行时的字段说明。最后在目录4介绍使用案例&#xff0c;包括&#xff1a;基本用法、测试完成后如何生成报告、测试结…

分布式执行引擎ray入门--(1)简介

官网地址&#xff1a;Overview — Ray 2.9.3 1.ray的概述&#xff1f; Ray 是一个高性能的分布式执行引擎&#xff0c;开源的人工智能框架。旨在帮助开发者在原有代码上添加几行代码就可以进行分布式训练。 它由如下几个部分构成&#xff1a; 1&#xff09;可扩展的库 用于常…

Intel FPGA IP之LVDS SerDes IP学习

FPGA 视频数据输入输出直通工程&#xff1a; 屏&#xff1a;13.2吋8bit色深&#xff0c;屏幕分辨率为1440*192060&#xff0c;具有两个Port&#xff0c;每个Port有4个差分数据对与1个差分时钟对&#xff0c;差分对均支持LVDS协议芯片&#xff1a;Cyclone V系列FPGA目的&#x…

Linux第68步_旧字符设备驱动的一般模板

file_operations结构体中的函数就是我们要实现的具体操作函数。 注意&#xff1a; register_chrdev()和 unregister_chrdev()这两个函数是老版本驱动使用的。现在新字符设备驱动已经不再使用这两个函数&#xff0c;而是使用Linux内核推荐的新字符设备驱动API函数。 1、创建C…

DC-2靶机详解

写写自己打DC-2的过程 使用工具 kali DC-2的靶机下载地址为&#xff1a;https://www.vulnhub.com/entry/dc-2,311/ 环境配置。 Kali和DC-2都设置为NAT模式&#xff0c;都为仅主机模式也可以。 信息收集 arp-scan -l nmap -sn 192.168.236.0/24 获取靶机ip&#xff1a;192.16…

最小高度树-力扣(Leetcode)

题目链接 最小高度树 思路&#xff1a;本质上是找到树中的最长路径。当最长路径上中间点&#xff08;若路经长为偶数&#xff0c;则中间点仅有一个&#xff0c;否者中间点有两个&#xff09;作为根时&#xff0c;此时树高最小。 Code: class Solution { public://拓扑排序int…

Neoverse CSS N3:实现市场领先能效的最快途径

区分老的架构 从云到边缘&#xff0c;Arm Neoverse 提供无与伦比的性能、效率、设计灵活性和 TCO 优势&#xff0c;正在颠覆传统基础设施芯片。 我们看到云和超大规模服务运营商正在推动更高的计算密度。随着 128 核心 CPU 设计上市&#xff08;Microsoft Cobalt、阿里巴巴 Y…

使用 Docker 部署 MrDoc 在线文档管理系统

1&#xff09;MrDoc 介绍 MrDoc 简介 MrDoc 觅思文档&#xff1a;https://mrdoc.pro/ MrDoc 使用手册&#xff1a;https://doc.mrdoc.pro/p/user-guide/ MrDoc 可以创建各类私有化部署的文档应用。你可以使用它进行知识管理、构建团队文库、制作产品手册以及在线教程等。 Mr…

Git推送本地仓库至阿里云仓库

Git推送本地仓库至阿里云仓库 1.安装Git 参考Git安装详解 2.生成 SSH 密钥 基于RSA算法SSH 密钥 1.管理员权限运行Git Bash 2.输入生成密钥指令点击回车&#xff0c;选择 SSH 密钥生成路径。 $ ssh-keygen -t rsa -C "2267521563qq.com"3.以 RSA算法为例&…

jupyter 一键快捷启动方法研究

1.效果 首先打开dat 文件&#xff0c;同意赋予管理员 输入序号1 成功启动 2.Bat代码 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&e…

(十)SpringCloud系列——openfeign的高级特性实战内容介绍

前言 本节内容主要介绍一下SpringCloud组件中微服务调用组件openfeign的一些高级特性的用法以及一些常用的开发配置&#xff0c;如openfeign的超时控制配置、openfeign的重试机制配置、openfeign集成高级的http客户端、openfeign的请求与响应压缩功能&#xff0c;以及如何开启…