当前位置: 首页 > article >正文

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

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

class CMed_timeDlg : public CDialog
{
// Construction
public:
	CMed_timeDlg(CWnd* pParent = NULL);	// standard constructor
    UINT 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.kler.cn/news/339419.html

相关文章:

  • 单片机教案 1.2 ATmega2560单片机和Arduino IDE编程基础
  • 易基因: cfMeDIP-seq揭示cfDNA甲基化高效区分原发性和转移性前列腺|Nat Commun
  • rust tokio在linux下面无法创建超过1000个线程问题解决
  • 【每日一题 | 24.10.8】确定字符串是否是另一个的排列
  • Python 卸载所有的包
  • C 数组
  • 宠物咖啡馆在线体验:SpringBoot技术的应用
  • PostgreSQL学习之有关身份鉴别的一些小想法
  • VMWare安装和基本使用NixOS Linux 24.05版本
  • 云岚到家,使用Elasticsearch实现服务的搜索功能,使用Canal+MQ完成服务信息与ES索引同步。MQ
  • 无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)
  • 宠物咖啡馆在线互动:SpringBoot框架的创新实现
  • 【重学 MySQL】六十二、非空约束的使用
  • Linux-磁盘优化的几个思路
  • OJ在线评测系统 微服务 用分布式消息队列 RabbitMQ 解耦判题服务和题目服务 手搓交换机和队列 实现项目异步化
  • 【动态规划-最长公共子序列(LCS)】【hard】力扣1092. 最短公共超序列
  • 独家揭秘!成为CSDN人工智能优质创作者:我的故事和心得
  • Redis-消息队列
  • JavaScript 变量的简单学习
  • 贪心算法c++