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

用MFC多媒体定时器做一个每1秒钟加一次的计时器,点开始计时按钮开始计时,点关闭计时按钮关闭计时。

1、在库文件Med_timeDlg.h文件中添加代码

cpp 复制代码
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文件中添加代码

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);
	
}

运行程序

源码下载

相关推荐
啦啦啦啦啦zzzz5 分钟前
自定义日志缓冲区(上)c++20
linux·服务器·c++·网络编程
wabs6667 分钟前
关于二叉树【力扣199.二叉树的右视图的思考】
数据结构·c++·算法·leetcode·二叉树·层序遍历
hope_wisdom20 分钟前
C/C++数据结构之二叉树的遍历
c语言·数据结构·c++·二叉树·深度优先·广度优先
cpp_learner1 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
c++·设计模式
一木 之林2 小时前
五、C++ 新特性、关键字与编译原理(进阶)(一)
c语言·开发语言·c++
2601_962298272 小时前
交易开拓者通常使用什么编程语言?这种语言如何帮助自动化交易?
java·c++·python·编程语言·自动化交易
码匠许师傅2 小时前
【设计模式精讲】23.备忘录模式(Memento)
c++·设计模式·软件工程·uml·备忘录模式
键盘会跳舞2 小时前
【C++多线程】thread_local 深度剖析:线程局部存储的生命周期与实现
c++·多线程·thread_local
whitelbwwww2 小时前
c++ 多线程
开发语言·c++·算法
努力努力再努力wz2 小时前
【Docker入门系列】:从架构演进到容器化:一文建立 Docker、虚拟化与 Namespace 的底层心智模型
运维·开发语言·数据结构·c++·docker·容器·架构