vc控制台Timer程序

VC++ 定时器基本使用 新建一个单文档工程;在resource.h定义2个定时器; #define TIMER1 1 #define TIMER2 2 找到主框架类的OnCreate函数; 在OnCreate()添加2句;设置两个定时器的间隔时间; SetTimer(TIMER1,3000,0); SetTimer(TIMER2,5000,0); 为主框架类添加WM_TIMER消息处理函数; OnTimer代码如下; void CMainFrame::OnTimer(UINT nIDEvent) 阅读详情

由于本人写了一个控制台mp3播放程序,需要判断播放是否结束,所以要用到timer,在网上找了N多资料,发现这个还是可以接受的。


      我现在项目是一个控制台程序,用到的Win32API都是与界面无关的,今天需要加入定时器刷新的功能,由于没有消息循环,所以WM_TIMER消息应该如何处理呢?综合了下网上找到的资料,写了个简单的demo,个人以为这种在一个线程中创建定时器,再通过指定的回调函数来处理定时器触发的模式是比较好的。
#include   <windows.h>  
#include   <stdio.h>  
#include   <conio.h>  
int   count   =0;  
VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
{
    count++;  
    printf("WM_TIMER   in   work   thread   count=%d/n",count);  
}
DWORD CALLBACK   Thread(PVOID   pvoid)  
{  
    MSG  msg;  
    PeekMessage(&msg,NULL,WM_USER,WM_USER,PM_NOREMOVE);  
    UINT  timerid=SetTimer(NULL,111,3000,TimerProc);  
    BOOL  bRet;  
   
    while(   (bRet = GetMessage(&msg,NULL,0,0))!=   0)  
    {    
        if(bRet==-1)  
        {  
            //   handle   the   error   and   possibly   exit  
        }  
        else  
        {   
            TranslateMessage(&msg);    
            DispatchMessage(&msg);    
        }  
    }  
    KillTimer(NULL,timerid);  
    printf("thread   end   here/n");  
    return   0;  
}

int    main()  
{  
    DWORD   dwThreadId;  
    printf("use   timer   in   workthread   of   console   application/n");  
    HANDLE   hThread  =    CreateThread(NULL,0,Thread,0,0,&dwThreadId);
    _getch();
    return 0;
}  

VC++ Timer 定时器使用源码 在编程时,会经常使用到定时器。但是VC++中没有定时器控件,在使用过程中是通过SetTimer和KillTimer实现的。 立即下载

相关推荐

用线程实现的定时器Timer

用vc实现的基于线程的定时器Timer,通常vc++的定时器timer是基于窗体的,由窗体消息驱动,而本程序实现的timer是基于线程的,不用windows消息驱动,而是基于线程事件驱动的

vc 控制台下 窗口消息处理 以及 定时函数 SetTimer

控制台是没有窗口处理队列的,所以必须自己处理函数。   进程间的通信。用 #define WM_USER_MSG WM_USER+102 WM_COPYDATA貌似不起作用。   我们手动制作一个消息处理函数,然后就可以进行 settimer,定时处理任务了。   // HOOK 消息循环处理.cpp : 定义控制台应用程序的入口点。 // #include "StdAfx.h

fanpeii的专栏 2468

vc 定时器 Timer 多媒体定时器 毫秒 ms

vc 定时器 Timer 多媒体定时器 毫秒 ms

解决VS2010控制台程序运行结束不显示请按任意键继续

在VS2010里的控制台应用程序在运行时,结果画面一闪而过,不管是用F5 还是用Ctrl + F5都是一样,导致无法看到结果。   网上有不少的办法,说是都是在程序最后加一个要程序暂停的语句( system("pause"); )或从控制台上获取用户输入的语句。 其实还有一个更好的解决办法: 在你的项目条目(project)上右击鼠标,在弹出菜单上选择最后一项“proper

_eternityh 1万+

百度无人车ApolloAuto使用入门

1.安装原版ubuntu 14.04 http://www.ubuntu.org.cn/download/alternative-downloads 2.安装对应ubuntu 14.04的indigo版ROS http://wiki.ros.org/indigo/Installation/Ubuntu 3.安装Apollo Kernel https://github.co

ss910的博客 3万+

深度解析direct path write temp与ASM IO性能问题:Oracle 19.17视图查询优化指南

本文深度解析了Oracle 19.17版本中复杂视图查询出现`direct path write temp`与`ASM IO for non-blocking poll`性能瓶颈的根本原因。通过对比11.2.0.4版本的执行计划差异,文章提供了从CBO参数调整、存储层优化到SQL架构重构的完整实战调优指南,帮助DBA有效解决升级后的查询性能问题。

2y3u4i5o6p的博客 1100

VC控制台程序编写(转)

VC强大而复杂,控制台程序(Console Application)是运行在Windows虚拟DOS环境中的程序,代码与TC中的基本一样,可以利用这种程序进行 VC的入门学习,同时可以享受VC友好的开发环境带来的便利。 Visual C++ 6.0是Visual Studio 98中的一个模块,Visual Studio 98包含Visual Basic、Visual C++、Visual Fox

要饭's Blog 5200

经典密码体制(上)

头歌

shannidawang的博客 3086

VC++中计时器的运用

 1、MFC中的计时原理:当你需要每隔一段时间执行一件事的的时候就需要使用SetTimer()函数了。 让我们先来看看SetTimer函数的原型:    UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD)) 当使用SetTimer函数的时候

VC++/MFC的专栏 1万+

用SimaPro做碳足迹分析:手把手教你完成产品生命周期评估报告

本文详细介绍了如何使用SimaPro进行碳足迹分析,从软件安装到生命周期评估报告的完整流程。通过实战案例演示,帮助制造业企业、咨询机构和科研团队掌握产品生命周期评估(LCA)的核心技术,精准识别环境热点并优化决策,为可持续发展转型提供科学依据。

yhn45678901的博客 714

基于半经验模型的熔断器燃弧过程计算与分析

本文针对1200V/1250A熔断器建立电弧燃烧半经验模型,通过ANSYS计算弧前时间,结合熔体烧蚀、石英砂烧蚀等物理过程简化建模。模型引入电导率随温度变化函数,利用Matlab拟合实验数据确定参数。分析表明:熔体宽度和节距增加会提高弧压峰值并缩短过零时间;总长固定时,断口数和节距影响较小。弧压峰值需控制在额定电压3倍内,过零时间需满足安全裕度。通过Python代码复现了电弧电导率模型、能量平衡方程及弧压计算,验证了熔体结构尺寸对电弧特性的影响规律。

huanghm88的专栏 259

VC++中计时器timer的运用

1、MFC中的计时原理: 当你需要每隔一段时间执行一件事的的时候就需要使用SetTimer()函数了。 让我们先来看看SetTimer函数的原型:     UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD)) 当使用SetTimer函数的时候,就会生

jmxiaocai的专栏 5936

一点击打印电脑就卡死?资源管理器停止工作的解决方法

Windows11共享的HP1022n打印机导致客户端打印时资源管理器崩溃卡死,电脑停止工作。

gary18的专栏 581

VC++下控制台程序SetTimer定时器的应用

SetTimer定时器使用

weixin_48856218的博客 719

Roboguide与TIA V16通讯

Roboguide与TIA V16通讯

haier123888的博客 2674

【AI大模型】核心基石:Transformer架构入门通俗完整解读

文章摘要: Transformer架构是AI大模型(如GPT、Llama等)的核心基石,彻底颠覆了传统RNN/LSTM的逐字计算模式,通过自注意力机制实现全局并行运算和长文本语义理解。本文用通俗语言拆解Transformer的核心模块:位置编码保留语序、多头注意力捕捉上下文关联、掩码机制确保生成逻辑、残差连接稳定训练,并搭配极简PyTorch代码演示Decoder架构的逐字生成过程。Transformer的并行性、可堆叠性和全局注意力优势,使其成为千亿参数大模型的基础。理解Transformer是掌握大模型

unber的博客 43

VC++控制台程序中使用定时器

#include   windows.h>    #include   stdio.h>    #include   conio.h>    int   count   =0;    VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime) {     count++;        

请叫我小明 (坐标:西安) 1537

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Win32控制台程序的定时器实现

在论坛上常有问及在console下能否像在MFC一样用SetTimer设置定时器,他们往往得到的回答是“不能”,或者顶多给个多媒体定时器例子你,其实win32 console程序跟一般的win 32程序并没有什么多大的区别,只是它更擅长于文本命令输入输出,一般win32程序能做的事win32 console程序也可以做到的,然而似乎初学者甚至是做了多年VC开发的的”老鸟“总是感到一阵”恐慌“,他们

388

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC 控制台 SetTimer

VOID CALLBACK TimerProcess(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime) { } int main(int argc, _TCHAR* argv[]) { //设置定时器 ...

chuangyi2745的博客 241

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

vc控制台程序中使用定时器

转载自:VC++控制台程序中使用定时器 在新线程中创建定时器,指定回调函数,并且在线程中加入消息处理。 1 2 #include <windows.h> 3 #include <stdio.h> 4 #include <conio.h> 5 6 int count =0; 7 8 VOID CAL...

weixin_30545285的博客 167

VC控制台下使用定时器

<br />VC控制台下使用定时器<br /> <br />编号:A3GS_TV201003050005<br /> <br />描述 :<br /> <br />本文以例子代码的形式讲述了VC 中如何在控制台下使用定时器。<br /> <br />技术实现 :<br /> <br />#include<windows.h><br />#include<stdio.h><br />#include<conio.h><br /> <br />int count =0;<br /> <br />VOID

730
下一篇: 正则表达式和Java编程语言
hua_java
博客等级 码龄20年 0粉丝 0原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值