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)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++控制台程序中使用定时器相关推荐
- VC的Win32控制台程序中使用MFC库文件
如果想要在VC中的Win32控制台程序中使用CString类,应注意下列情况: 1.必须包含头文件#include <afx.h> 2.Project ----settings... -- ...
- 在控制台程序中隐藏控制台窗口
在控制台程序中隐藏控制台窗口 大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只 ...
- 在vc6控制台程序中如何调用运行ImageMagick命令行工具
在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...
- java怎么加定时器_JAVA WEB程序中添加定时器
JAVA WEB程序中添加定时器 //这是我的定时器类,用来定时执行某段任务: package com.my.time; import java.text.ParseException; import ...
- 如何在.NET Core控制台程序中使用依赖注入
背景介绍 依赖注入(Dependency Injection), 是面向对象编程中的一种设计原则,可以用来减低代码之间的耦合度.在.NET Core MVC中 我们可以在Startup.cs文件的Co ...
- C#net6控制台程序中读取appsettings.json
C#net6控制台程序中读取appsettings.json 背景 具体实现 使用方法 背景 我们知道,在原来.netframework平台下的控制台程序配置文件为App.config,微软推出跨平台 ...
- 在控制台程序中隐藏控制台窗口!
大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...
- qt 隐藏控制台_在控制台程序中隐藏控制台窗口
大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...
- 在控制台程序中使用MFC类
win7, vc6:新建一个控制台程序:代码如下 : #include <afx.h> #include <stdio.h>int main() {int lo, hi;CSt ...
最新文章
- innerHTML的确是好东西
- Spring Security Java Config Preview--官方
- 调取方法_转需!不去阿里巴巴调取支付宝交易证据方法
- qpython3可视图形界面_python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法...
- Openfire使用上的一些技巧
- oracle的视图表,oracle 常用视图和表
- 【C语言进阶深度学习记录】十 C语言中:struct的柔性数组和union分析
- 一句话让你明白伪元素和伪类的区别
- 15. Django基础:cookies和sesseion
- html班级管理模板,班级管理建议书模板参考
- 基于 Echarts 实现可视化数据大屏展示
- 计算机积木游戏,儿童智力开发游戏:四款适合幼儿的积木游戏
- 苹果海洋视频源直播源文件
- 在.NET实现邮件收发功能(包含源代码)
- android开发 java.lang.IllegalStateException at android.media.MediaPlayer._prepare(Native Method)
- STC89C52RC定时器的最基本实例
- 发展最快的小程序:甩甩宝宝
- 2022年最新面试JVM面试追魂夺命17问,教科书级回答
- TechBeat: 强化学习ppo让决策智能演化出无限可能
- 爱科设立爱科农业基金会
热门文章
- 【正一专栏】恒大中超七连冠到手了
- 线程与内核对象的同步——Windows核心编程学习手札之九
- python的re.findall()函数中的括号问题
- ignite在MacOS或Linux上的安装
- JQuery 基础 || 目前 jQuery 有三个大版本||JQuery快速入门
- 国产化达梦数据库数据迁移文档:oracle11g数据库转达梦8数据库实例演示
- mysql会话命令_mysql常用命令(持续更新)
- 可简单图化算法(Havel算法)
- \00在python中
- 将string转成dict(Python)