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

简介:
 我现在项目是一个控制台程序,用到的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;
}   


本文转自Phinecos(洞庭散人)博客园博客,原文链接http://www.cnblogs.com/phinecos/archive/2008/03/08/1096691.html,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
Linux C++
C++服务器开发之定时器设计方案
定时器应⽤:1.⼼跳检测 2.技能冷却 3.武器冷却 4.倒计时 5.其它需要使⽤超时机制的功能
39 0
C++服务器开发之定时器设计方案
|
7月前
|
C++ 容器
掌握C++定时器:构建自己的定时器的分步指南
本文是一份详细的、分步指南,旨在帮助读者掌握C++定时器的构建过程。通过本文,读者将了解到什么是定时器,以及为什么需要自己构建定时器而不仅仅使用标准库中的函数。文章将从基础开始,介绍了利用C++的基本语法和操作符创建一个简单的定时器的步骤。随后,文章逐渐深入,介绍了如何优化定时器的性能,包括减少延迟和提高精度。
180 0
|
27天前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
70 2
|
8月前
Visual Studio 2019 设置程序结束控制台不关闭
修改设置使控制台应用运行结束,控制台不自动退出。
230 0
Visual Studio 2019 设置程序结束控制台不关闭
|
Java
编写Java程序,实现控制台版的省市联动
编写Java程序,实现控制台版的省市联动
257 0
|
存储 Java 索引
Java初学者作业——编写JAVA程序,在控制台中输入六位员工的姓名,通过随机点名方式,输出当选组长的员工姓名。
Java初学者作业——编写JAVA程序,在控制台中输入六位员工的姓名,通过随机点名方式,输出当选组长的员工姓名。
359 0
Java初学者作业——编写JAVA程序,在控制台中输入六位员工的姓名,通过随机点名方式,输出当选组长的员工姓名。
|
Java
Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。
Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。
511 0
Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。
|
Java
Java初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。
Java初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。
466 0
Java初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。
|
存储 Java
Java初学者作业——编写Java程序, 在控制台输入数字,计算表达式1-2+3-4……+(2*n-1)+2*n的结果。
Java初学者作业——编写Java程序, 在控制台输入数字,计算表达式1-2+3-4……+(2*n-1)+2*n的结果。
246 0
Java初学者作业——编写Java程序, 在控制台输入数字,计算表达式1-2+3-4……+(2*n-1)+2*n的结果。
|
存储 Java
Java初学者作业——编写 Java 程序,在控制台中输入日期,计算该日期是对应年份的第几天。
Java初学者作业——编写 Java 程序,在控制台中输入日期,计算该日期是对应年份的第几天。
495 0
Java初学者作业——编写 Java 程序,在控制台中输入日期,计算该日期是对应年份的第几天。

热门文章

最新文章