一、前言

本博客在MFC工程中,完成了对创建多媒体定时器和读文档功能的应用。

二、技术实现

首先要包含MMSystem.h头文件,还要添加以下代码 #pragma comment(lib,"winmm.lib")

创建多媒体定时器由四个函数合作完成:

  1. 执行创建:CreateTimer();
  2. 执行回调:TimeProc();
  3. 执行内容:OnTimer();
  4. 执行销毁:DestroyTimer();

        1. 创建函数 CreateTimer()

使用这个函数创建一个多媒体定时器

UINT CMy11Dlg::CreateTimer()
{//create the timeryte+89+121741  01234 // Create a periodic timertimeBeginPeriod(1);  timerID = timeSetEvent(1,1,TimeProc,(DWORD)this,TIME_PERIODIC);    return timerID;}

(1)timeBeginPeriod(1);      //开始一个新段,当使用多个‘多媒体定时器’时,()内的数字不能重复;

(2)启动多媒体定时器函数。

MMRESULT timeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, WORD dwUser, UINT fuEvent )

参数说明:

  • uDelay:以毫秒指定时的周期
  • Uresolution:以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。
  • LpTimeProc:指向一个回调函数,该回调函数包含需要定时执行的代码。
  • DwUser:存放用户提供的回调数据。
  • FuEvent:指定定时器事件类型:
  • TIME_ONESHOT:uDelay毫秒后只产生一次事件。
  • TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。

        2. 回调函数:TimeProc()

每一次多媒体定时器循环都会从这个函数开始,所以我们叫它回调函数。

void CALLBACK CMy11Dlg::TimeProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{CMy11Dlg* pdcpackerdlg = (CMy11Dlg*)dwUser;
m_num++;
pdcpackerdlg->m_number=m_num;
pdcpackerdlg->OnTimer(1);   //之所以有数字1,是因为你可以把它内部设置成switch选择框架}

(1)函数原型:

void CALLBACK TimeProc(  UINT uID,        UINT uMsg,       DWORD dwUser,    DWORD dw1,       DWORD dw2      );

对于应用程序定义的函数名TimeProc为一个占位符。

(2)参数:

  • uID:时间事件标识符,当定时器被建立时,timerSetEcent函数返回该标识符。
  • uMsg:保留,未使用。
  • dwUser:由timeSetEvent函数的dwUser参数提供的用户实例数据。
  • dw1 and dw2 :保留字,未使用。

*应用程序不能从回调函数内部调用系统定义的函数,除了PostMessage, timeGetSystemTime, timeGetTime, timeSetEvent.TimeKillEvent, midiOutShortMsg, midiOutLongMsg和OutpuitDebugString。

        3. 执行函数:OnTimer()

把你希望多媒体定时器循环执行的内容写在这个函数内。这里执行函数的名字你可以自定义,并不一定要以OnTimer()为名。

void CMy11Dlg::OnTimer(UINT nIDEvent)
{// TODO: Add your message handler code here and/or call defaultswitch (nIDEvent){case 1:{Sim_Data_Write<<TestData[0]<<"     "<<TestData[1]<<"      "<<TestData[2]<<"      "<<TestData[3]<<"     "<< TestData[4]<<"      "<<TestData[5]<<"      "<<TestData[6]<<"     "<<TestData[7]<<"     "<<TestData[8]<<"     "<<endl;CString str;str.Format("%d",m_number);GetDlgItem(IDC_EDIT1)->SetWindowText(str);     CString str1;str1.Format("%f",TestData[0]);GetDlgItem(IDC_test0)->SetWindowText(str1);     CString str2;str2.Format("%f",TestData[1]);GetDlgItem(IDC_test1)->SetWindowText(str2);     CString str3;str3.Format("%f",TestData[8]);GetDlgItem(IDC_test8)->SetWindowText(str3);     break;}}CDialog::OnTimer(nIDEvent);}

这里我们执行的内容是,读取一个.txt文件,并将文件中的内容显示到MFC界面内。

4. 销毁函数:DestroyTimer()

执行此函数后将停止多媒体定时器循环,并销毁此定时器。

void CMy11Dlg::DestroyTimer()
{timeKillEvent(timerID);timeEndPeriod(1);
}

例程执行结果:

至此,一个完整的多媒体定时器例程就创建完毕了,注意不要忘记添加多媒体定时器的头文件。


小白将一个完整的例程放在这里,上面的代码也均来自此例程

链接:Robot_Starscream的资源

功能包括:多媒体定时器、.txt文档读操作。

「C++ MFC」 “多媒体定时器实例”讲解相关推荐

  1. 「 C++ MFC 」“读取.txt文档实例”讲解

    一.前言 本博客在MFC工程中,完成了对"读取.txt文档"功能的实战. 二.技术实现 整个程序分为三个过程:开始读文档.应用文档和停止读文档.         1. 开始读文档 ...

  2. Facebook人工智能实验室提出「全景分割」,实现实例分割和语义分割的统一

    原文来源:arxiv 作者:Alexander Kirillov.Kaiming He1.Ross Girshick.Carsten Rother.Piotr Dollar 「雷克世界」编译:嗯~阿童 ...

  3. canvas换图时候会闪烁_基于Canvas实现的高斯模糊(上)「JS篇」

    作者:iNahoo 转发链接:https://mp.weixin.qq.com/s/5TxPjznpEBku_ybSMBdnfw 目录 基于Canvas实现的高斯模糊(上)「JS篇」本篇 基于Canv ...

  4. node 压缩图片_推荐10个常用的图片处理小帮手(下)「值得收藏」

    作者: semlinker 转发链接:https://mp.weixin.qq.com/s/i3ynTtPJOECoAYfqHFoo3Q 前言 本文给小伙伴们隆重介绍用于图片处理的十个 「" ...

  5. 「 C++ TwinCAT3 」倍福 “ADS通讯技术及工程实例”研究

    一.前言 本博客在具体的工程中,实现 Visual Studio(简称"上位机") 与 TwinCAT(简称"下位机") 之间的 ADS通讯,通过ADS通讯完成 ...

  6. 养老e周刊创始人孙黎:16000字讲解「互联网+养老」需要面对的难题

    嘉宾介绍 孙黎,连续7年养老和家庭生活服务领域创业,曾联合创立云家政和陪爸妈,累计融资3000万+人民币对中国式养老有深刻理解,曾为10万+家庭提供养老服务的解决方案,对活力/失能老人的需求产品化有7 ...

  7. 全网最详细笔记:张益唐北大讲解火热出炉!本质上已证明「零点猜想」

      视学算法报道   编辑:编辑部 [导读]关于「零点猜想」问题,大海里的针我没捞到, 但海底地貌我探得差不多了. 一支马克笔,一张小白板. 刚刚,张益唐教授现身北大,在B站的直播平台上,给广大网友上 ...

  8. 全网最详细笔记:张益唐北大讲解火热出炉!证明「零点猜想」!

    本文 新智元 公众号授权  编辑部 [导读]关于「零点猜想」问题,大海里的针我没捞到, 但海底地貌我探得差不多了. 一支马克笔,一张小白板. 刚刚,张益唐教授现身北大,在B站的直播平台上,给广大网友上 ...

  9. 「网络创业家」变「网络发明家」的3个新网站实例

    「发明家」是那位名垂千古的伟大爱迪生,而「创业家」只是隔壁那个中辍找不到工作只好开点的阿狗,我们只敢认自己为「创业家」,不敢「升级」为「发明家」 .但,网络其实还蛮适合「发明」的. 周末看到一个我认为 ...

最新文章

  1. 千万QPS毫秒响应:快手数据中台建设实践
  2. 每天一个linux命令(49):at命令
  3. 【转】修改static控件背景颜色和文字颜色
  4. 中断linux命令快捷键_基于Linux终端命令行的快捷键的详细解析
  5. 电商峰值系统架构设计
  6. 基于SSM框架的毕业设计管理系统的设计与实现(附资源下载)
  7. easyexcel导出excel文件之图片导出
  8. 前端单点登录(SSO)
  9. 推荐一个Firefox的扩展——IE Tab
  10. 机器人周志_智能机器人杂志
  11. HACKTHEBOX——Starting Point Tier0
  12. 软著申请--学生以学校名义申请软著
  13. 对于光本身,光走一光年的距离需要多久?————狭义相对论-钟慢效应(时间膨胀)
  14. Placing Lampposts UVA - 10859 放置街灯 树形dp
  15. python获取文件夹名称、文件名、去除后缀的文件名、文件改名等
  16. 楼层标高怎么引上去_楼层标高怎么引上去
  17. 12大主流平板电脑CPU主控方案平台及其生产厂商
  18. 微信商城小程序 带java后台源码
  19. 泥石流与滑坡的遥感解译特征
  20. 158:vue+openlayers 地图上Echarts模拟飞机循环飞行

热门文章

  1. 什么是TCP/IP协议?
  2. 怎么重装服务器的系统,怎么重装服务器操作系统
  3. 在linux上gc日志详解,JVM Parallel Scavenge GC日志详解
  4. HDU 5761 Rower Bo
  5. notify()和notifyAll()的区别
  6. IC 产品的质量与可靠性测试
  7. 南宁市第二十六中学:教研路漫漫,花香伴我行
  8. matlab relieff函数,数据挖掘 ReliefF和K-means算法的应用
  9. MapGuide空间参考系API
  10. android 7原生动态壁纸,手机里都是定制OS?谷歌Android 7.0原生系统壁纸邀你来尝鲜!...