MFC多媒体定时器实例(源码下载)

server/2024/12/22 14:50:20/

用MFC多媒体定时器做一个每1秒钟加一次的计时器,点开始计时按钮开始计时,点关闭计时按钮关闭计时。
1、在库文件Med_timeDlg.h文件中添加代码

class CMed_timeDlg : public CDialog
{
// Construction
public:CMed_timeDlg(CWnd* pParent = NULL);	// standard constructorUINT timerID;//自己添加的定时器ID变量UINT timerID1;//自己添加的定时器ID变量void DestroyTimer();//自己声明的销毁定时器函数UINT CreateTimer();//自己声明的创建定时器函数void OnTimer(UINT nIDEvent);
static void CALLBACK TimeProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);//定时器回调函数
}

2、在项目对话框Med_timeDlg.cpp文件中添加代码

UINT CMed_timeDlg::CreateTimer()
{timeBeginPeriod(1);//设置定时器设备的最小时间分辨率timerID = timeSetEvent(1000, 1, TimeProc, (DWORD)this, TIME_PERIODIC);return timerID;//返回定时器ID// timeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK IP TimeProc, DWORD_PTR dwUser, UINT fuEvent);
//创建并初始化定时器事件,定时器回调函数入口地址
//uDelay:定时器触发时间间隔,以毫秒为单位
//uResolution:定时器设备精度,以毫秒为单位,,默认为1ms
//LpTimeProc:定时器出发时间的回调函数的地址
//dwUser:传递给回调函数的数据
//fuEvent:定时类型,TIME_ONSHOT表示uDelay毫秒后只产生一次事件,TIME_PERIOFIC表示每隔uDelay毫秒周期性的产生事件}void CMed_timeDlg::DestroyTimer()
{timeKillEvent(timerID);//销毁定时器timeEndPeriod(1);//清除上次调用 timeBeginPeriod 函数时指定的最小计时器分辨率
}void CALLBACK CMed_timeDlg::TimeProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{CMed_timeDlg* time_dlg = (CMed_timeDlg*)dwUser;time_dlg->OnTimer(uID );//uID:多媒体定时器的ID,ID值由timeSetEvent创建定时器事件时返回//uMsg:保留 不使用//dwUser:由timeSetEvent传递的用户数据//dw1,dw2:保留 不使用
}void CMed_timeDlg::OnBUTTONstart() 
{CreateTimer();}void CMed_timeDlg::OnBUTTONstop() 
{DestroyTimer();	
}int i=0;
void CMed_timeDlg::OnTimer(UINT nIDEvent)
{CString str;i++;str.Format("%d",i);SetDlgItemText(IDC_STATIC1,str);}

运行程序
在这里插入图片描述

源码下载


http://www.ppmy.cn/server/127552.html

相关文章

HTB:Preignition[WriteUP]

连接至HTB服务器并启动靶机 靶机IP:10.129.157.49 分配IP:10.10.16.12 1.Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (…

使用 vite 快速初始化 shadcn-vue 项目

Vite 1. 创建项目 使用 vite 创建一个新的 vue 项目。 如果你正在使用 JS 模板,需要存在 jsconfig.json 文件才能正确运行 CLI。 # npm 6.x npm create vitelatest my-vue-app --template vue-ts# npm 7, extra double-dash is needed: npm create vitelatest m…

微信小程序hbuilderx+uniapp+Android 新农村综合风貌旅游展示平台

目录 项目介绍支持以下技术栈:具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是:数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 小程序端…

MATLAB计算与建模常见函数:4.插值

插值 什么是插值? 通常实验测量或者采集的数据都是离散数值;插值是指在所给的基准数据情况下,研究如何平滑地估算出基准数据之间其它点的函数数值;一些点的数据无法获得,或者获取这些点的数据代价较高时,…

C++编程:实现简单的高精度时间日志记录小程序

0. 概述 为了检查是否存在系统时间跳变,本文使用C实现了一个简单的高精度时间日志记录小程序。该程序能够每隔指定时间(默认40毫秒)记录一次系统时间到文件中,并具备以下功能: 自定义时间间隔和文件名:通…

一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)

知乎:然荻链接:https://zhuanlan.zhihu.com/p/721941928 1. 背景介绍 如果你拿到了两台8卡A100的机器(做梦),你的导师让你学习部署并且训练不同尺寸的大模型,并且写一个说明文档。你意识到,你最…

Unity Input System自动生成配置

参考视频 创建及配置新输入系统 New Input System|Unity2022.2 最新教程《勇士传说》入门到进阶|4K_哔哩哔哩_bilibili ProjectSettings设置 Unity编辑器菜单栏选择Edit->Project Settings->Player->Other Settings,将Api Compatibility Level…

影刀RPA实战:Excel拆分与合并工作表

1.影刀操作excel的优势 Excel,大家都不陌生,它是微软公司推出的一款电子表格软件,它是 Microsoft Office 套件的一部分。Excel 以其强大的数据处理、分析和可视化功能而闻名,广泛应用于商业、教育、科研等领域。可以说&#xff0…