一、前言

此历程来自机器人控制工程中的一部分,“开线程调用多媒体定时器”在工程中是很常用的一部分,但对于新手来说却很难理解。下面小白用最简单的方式,清晰的记录下程序顺序运行的每一环节。

主要完成两件事:声明一个线程,声明一个多媒体定时器。我想你也猜到要怎么做了,对,在声明的线程里面声明多媒体定时器,然后执行。道理是不是很简单,理解这句话你就掌握80%了,程序编写更简单。

二、技术实现

整个程序程序分成四个部分:

  1. OnBnClickedRbfcontrol()函数,负责声明一个线程,然后执行声明的RBFThreadproc()函数;
  2. RBFThreadproc(LPVOID pParam)函数,是开启线程后的执行函数,本例程执行多媒体定时器CreateTimer()函数;
  3. CreateTimer()函数,用来声明一个多媒体定时器,然后执行循环调用函数TimeProc()函数;
  4. TimeProc()函数,负责循环调用你期望的执行指令。
void CANNControlDlg::OnBnClickedRbfcontrol()
{//声明一个线程HANDLE hThread;UINT uiThreadId = 0;hThread = (HANDLE)_beginthreadex(NULL,0,RBFThreadproc,this,CREATE_SUSPENDED,&uiThreadId);//判断是否声明成功if(NULL != hThread){ResumeThread( hThread );m_RBFThread = hThread;}
}UINT CANNControlDlg::RBFThreadproc(LPVOID pParam)
{//线程执行内容CANNControlDlg* pThis = reinterpret_cast<CANNControlDlg*>(pParam);_ASSERTE( pThis!= NULL);pThis->CreateTimer();return 1L;
}UINT CANNControlDlg::CreateTimer()
{//声明一个多媒体定时器timeBeginPeriod(1);FileTimerID = timeSetEvent(DataPeriod,1,TimeProc,(DWORD)this,TIME_PERIODIC);    return FileTimerID;}void CALLBACK CANNControlDlg::TimeProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{//多媒体定时器执行内容CANNControlDlg* pdcpackerdlg = (CANNControlDlg*)dwUser;pdcpackerdlg->MultiMediaRun();
}void CANNControlDlg::MultiMediaRun()
{//多媒体定时器执行函数ReadDataFromTC();
}

最后,在MultiMediaRun()函数中,编写希望循环执行的代码段。

「 C++ MFC 」“设置线程运行多媒体定时器”教程相关推荐

  1. 「C++ MFC」 “多媒体定时器实例”讲解

    一.前言 本博客在MFC工程中,完成了对创建多媒体定时器和读文档功能的应用. 二.技术实现 首先要包含MMSystem.h头文件,还要添加以下代码 #pragma comment(lib," ...

  2. 手机端linux虚拟机,教你如何用「UTM虚拟机」让苹果手机运行Windows/安卓/Linux系统...

    博谈天下以前看过在 iPhone / iPad "运行Windows系统"的视频,其实是通过远程控制软件,然后远程控制Windows桌面忽悠人的. 今天要给大家介绍这款真的可以在i ...

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

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

  4. 基于MFC C++设置进程运行显示器

    最近遇到项目,需要在单台电脑上运行两次同一个.exe文件(基于对话框),但两个进程需要在不同的屏幕上显示.在网上查找了一些资料,要么付费,要么代码中有一定问题.综合各个资料后,整理出可以直接使用的代码 ...

  5. 「视频版」当线程池溢出之后,程序会奔溃吗?面试突击 007 期

    哈喽,大家好,我是老王,欢迎来到第 7 期的 Java 面试突击. 本文的面试题是,当线程池的任务溢出之后,程序会奔溃吗? 这个问题问的是关于线程池的任务数超过线程池的承载能力之后,会出现什么情况? ...

  6. 「Java面试」将线程安全讲的如此清新脱俗:你对线程安全性的理解

    需要完整版面试文档可扫描文章底部二维码! 一位4年工作经验的小伙伴,被问到一个非常抽象的问题,说,谈谈你对线程安全性的理解.如果平时只是刷刷面试题的话,遇到这种问题可能不知道如何说起了,往往需要自己组 ...

  7. 安装squid_「首席推荐」设置Squid转发代理或者正向代理

    如果您正在阅读这篇文章,您可能会因为缺少与Squid相关的信息而感到沮丧,Squid是一种非常流行的转发代理.这些令人沮丧的事情包括:在小的软件修订之后出现的重大的可用性变化,对幕后发生的事情的误解, ...

  8. 传奇登录器修改服务器列表,传奇登录器TCP服务器远程列表「防劫持」设置教程...

    [Server] 70=★本地测试登陆器[WWW.DIYGM.COM]★|-----------------------------|威威本地登录器测试[WWW.DIYGM.COM]|192.168. ...

  9. 「3D建模」用ZBrush制作兔子模型教程

    "3D建模"通俗来讲就是通过三维制作软件通过虚拟三维空间构建出具有三维数据的模型. 就是将2D的画面通过3D软件转化为3D模型.以游戏为例,目前的3D建模分为3D角色,3D场景,次 ...

  10. 手机浏览器网址_「效率集」自定义网址导航高级功能介绍

    「效率集」是国内仅有的几家提供了个性自定义导航的网站,功能比hao123强,用户体验优于百度导航首页,且支持聚合搜索,方便用户从不同渠道(网页,微博,微信公众号,知乎,维基百科)获取信息:方便用户在网 ...

最新文章

  1. EncodeUtil
  2. c语言建立顺序表 存储并输出,请教数据结构课程中怎么建立顺序表,显示,输出,从头到尾详细点最好加讲解,希望大家能帮这个小忙...
  3. 有了bootstrap,为什么还要做amaze ui
  4. hive hql文档_大数据学习路线分享hive的运行方式
  5. 典型的DIV+CSS布局(左中右)
  6. Java继承_JAVA的三大特性
  7. php transform,css transform属性怎么用
  8. 通过汉字查找五笔码和拼音
  9. iOS下Safari自动化测试
  10. 2021微信公开课PRO:微信视频号首次公布运营规则,“点赞”表情成视频号年度表情
  11. PC端/电脑端有没有识别二维码并分类的工具
  12. Xshell 3.0序列号注册激活教程
  13. Linux终端收听mms流媒体电台
  14. C++身份证校验码计算器
  15. Vue - 判断终端是否为:IE内核、opera内核、苹果、谷歌内核、火狐内核、是否为移动终端、ios终端、android终端、是否为iPhone或者QQHD浏览器、是否iPad、是否微信、是否QQ
  16. C语言PAT刷题 - 1020 月饼
  17. 计算机图形学基础如何学,计算机图形学基础思考
  18. 2022帆软BI数据分析大赛他来了!
  19. 通过PyQt5+PyQtWebEngine+pyecharts建立自己的收入支出记账软件
  20. 字节跳动面试流程以及注意事项,各大厂具有通点,看看不吃亏!

热门文章

  1. WinInet 错误代码 (12001 - 12156 )
  2. VS清理中间文件bat脚本
  3. HeroM2连击技能设置和DB完整数据
  4. 快速搭建博客:美化主题
  5. android sqlite 打包 xe,Delphi XE使用SQLite3
  6. Delphi XE 10.2.3如何添加PDF阅读器组件
  7. 单机安装DynamicsAX2012R3VM
  8. 【C语言小游戏】走迷宫
  9. Python项目部署到Docker的完整过程
  10. as ssd测试软件得分少,【科普贴】如何读懂AS SSD的测试数据