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

转载于:https://www.cnblogs.com/winkyao/archive/2012/02/17/2355536.html

VC++控制台程序中使用定时器相关推荐

  1. VC的Win32控制台程序中使用MFC库文件

    如果想要在VC中的Win32控制台程序中使用CString类,应注意下列情况: 1.必须包含头文件#include <afx.h> 2.Project ----settings... -- ...

  2. 在控制台程序中隐藏控制台窗口

    在控制台程序中隐藏控制台窗口 大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只 ...

  3. 在vc6控制台程序中如何调用运行ImageMagick命令行工具

    在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...

  4. java怎么加定时器_JAVA WEB程序中添加定时器

    JAVA WEB程序中添加定时器 //这是我的定时器类,用来定时执行某段任务: package com.my.time; import java.text.ParseException; import ...

  5. 如何在.NET Core控制台程序中使用依赖注入

    背景介绍 依赖注入(Dependency Injection), 是面向对象编程中的一种设计原则,可以用来减低代码之间的耦合度.在.NET Core MVC中 我们可以在Startup.cs文件的Co ...

  6. C#net6控制台程序中读取appsettings.json

    C#net6控制台程序中读取appsettings.json 背景 具体实现 使用方法 背景 我们知道,在原来.netframework平台下的控制台程序配置文件为App.config,微软推出跨平台 ...

  7. 在控制台程序中隐藏控制台窗口!

    大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...

  8. qt 隐藏控制台_在控制台程序中隐藏控制台窗口

    大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...

  9. 在控制台程序中使用MFC类

    win7, vc6:新建一个控制台程序:代码如下 : #include <afx.h> #include <stdio.h>int main() {int lo, hi;CSt ...

最新文章

  1. innerHTML的确是好东西
  2. Spring Security Java Config Preview--官方
  3. 调取方法_转需!不去阿里巴巴调取支付宝交易证据方法
  4. qpython3可视图形界面_python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法...
  5. Openfire使用上的一些技巧
  6. oracle的视图表,oracle 常用视图和表
  7. 【C语言进阶深度学习记录】十 C语言中:struct的柔性数组和union分析
  8. 一句话让你明白伪元素和伪类的区别
  9. 15. Django基础:cookies和sesseion
  10. html班级管理模板,班级管理建议书模板参考
  11. 基于 Echarts 实现可视化数据大屏展示
  12. 计算机积木游戏,儿童智力开发游戏:四款适合幼儿的积木游戏
  13. 苹果海洋视频源直播源文件
  14. 在.NET实现邮件收发功能(包含源代码)
  15. android开发 java.lang.IllegalStateException at android.media.MediaPlayer._prepare(Native Method)
  16. STC89C52RC定时器的最基本实例
  17. 发展最快的小程序:甩甩宝宝
  18. 2022年最新面试JVM面试追魂夺命17问,教科书级回答
  19. TechBeat: 强化学习ppo让决策智能演化出无限可能
  20. 爱科设立爱科农业基金会

热门文章

  1. 【正一专栏】恒大中超七连冠到手了
  2. 线程与内核对象的同步——Windows核心编程学习手札之九
  3. python的re.findall()函数中的括号问题
  4. ignite在MacOS或Linux上的安装
  5. JQuery 基础 || 目前 jQuery 有三个大版本||JQuery快速入门
  6. 国产化达梦数据库数据迁移文档:oracle11g数据库转达梦8数据库实例演示
  7. mysql会话命令_mysql常用命令(持续更新)
  8. 可简单图化算法(Havel算法)
  9. \00在python中
  10. 将string转成dict(Python)