SetTimer是设置定时器,每隔一段时间执行一个操作,原型如下

  UINT_PTR SetTimer(

  HWND hWnd, // 窗口句柄

  UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器

  UINT uElapse, // 时间间隔,单位为毫秒

  TIMERPROC lpTimerFunc // 回调函数

  );

它是通过分发WM_TIMER消息来触发回调函数的,看下面代码

  1. void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
  2. {
  3. printf("%s","abc");
  4. }
  5. void main()
  6. {
  7. SetTimer(0, 0, 1000, &TimerProc);
  8. }

你认为上面的代码会正确执行吗,答案是不会,回调函数根本得不到执行。因为虽然使用了SetTimer,但是没有对WM_TIMER消息进行分发,所以不会触发回调函数,我们修改如下

  1. void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
  2. {
  3. printf("%s","abc");
  4. }
  5. void main()
  6. {
  7. SetTimer(0, 0, 1000, &TimerProc);
  8. MSG   msg;
  9. while(GetMessage(&msg,NULL,0,0))
  10. {
  11. if(msg.message==WM_TIMER)
  12. {
  13. DispatchMessage(&msg);
  14. }
  15. }
  16. }

OK,看到上面的while循环了吗,这里就是获取每秒钟发出的WM_TIMER消息,并分发下去,通知回调函数开始执行。

参考:http://blog.csdn.net/bdmh/article/details/6371443

经测试可行,完整代码:

#include "stdafx.h"
#include "windows.h"
#include "stdio.h" void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
printf("%s","abc"); }
void main()
{
SetTimer(, , , &TimerProc);
MSG msg;
while(GetMessage(&msg,NULL,,))
{
if(msg.message==WM_TIMER)
{
DispatchMessage(&msg);
}
}
}

如果这样写:

MSG msg;
GetMessage(&msg, NULL, 0, 0);

这样消息队列是有了,但是没有人分发消息那还是不行,不会执行TimerProc的内容的。

----------------------------------------------------------------------------------------------

Delphi版本:

控制台中使用SetTimer的提醒的更多相关文章

  1. C# 计算字符串在控制台中的显示长度

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  2. 利用跨域请求来隐藏firbug控制台中的Ajax请求

    本文链接:http://www.orlion.ml/63/ 普通jquery的Ajax请求在控制台中是可见的,如下: 而在利用jsonp(json with padding)进行Ajax跨域时,发现A ...

  3. 在 C# 控制台中记录异常日志并输出

    最近做了一个小程序,要求在控制台中记录程序运行的异常并输出到指定的文件夹中,以下是我的具体的程序代码: public static void ErrorLog(Exception ex) { stri ...

  4. 关于 JavaScript 中一个小细节问题 (在控制台中直接 {Name:'王尼玛',Age:20} 对象报错问题)

    在 Chrome 浏览器,大家可能遇到这样一个小问题. 随便输入一个 Object 对象  ,比如 {Name:'王尼玛',Age:20} ,将会报错.之前,也从来没去考虑过到底是为啥原因. 今天,刚 ...

  5. 转:在控制台中调试AngularJS应用

    在控制台中调试AngularJS应用 在创建AngularJS应用时,一个很棘手的问题是如何在Chrome,Firefox,以及IE的JavaScript控制台中访问深藏在应用中的数据和服务.本文将会 ...

  6. Chrome 开发者控制台中,你可能意想不到的功能

    Chrome 有内置的开发者工具.它拥有丰富的特性,比如元素(Elements).网络(Network)和安全(Security).今天,我们主要关注一下 JavaScript 控制台. 当我最初写代 ...

  7. ASP.NET Web API实践系列09,在Fiddler和控制台中模拟GET和POST请求

    ASP.NET Web API本质是由一个进程托管的一组类,需要宿主,这个宿主可以是ASP.NET应用程序,可以是MVC项目,可以是控制台应用程序,也可以是自己定制的宿主. 在VS2012中创建一个& ...

  8. 【转载】chrome控制台中看见的cookie属性详解

    在chrome控制台中的resources选项卡中可以看到cookie的信息. 一个域名下面可能存在着很多个cookie对象. name字段为一个cookie的名称. value字段为一个cookie ...

  9. Java入门系列-07-从控制台中接收输入

    这篇文章帮你使用Scanner类从控制台接收输入 从控制台接收字符串 敲一敲: import java.util.Scanner; public class DemoScanner { public ...

随机推荐

  1. POJ 1149 PIGS (AC这道题很不容易啊)网络流

    PIGS Description Mirko works on a pig farm that consists of M locked pig-houses and Mirko can't unlo ...

  2. python--4、装饰器

    装饰器(Decorator) 使用场景:为被装饰器装饰的函数增加功能,但又不希望修改函数的定义,即在代码运行期间动态增加功能. 装饰器更多的用于后期功能升级而不是编写新的代码.装饰器不光能装饰函数,也 ...

  3. backface-visibility当元素不面向屏幕时是否可见

    html代码 <h1>div1可见</h1> <div class="div1">div---1</div> <h1>d ...

  4. 青橙 M4 解锁BootLoader 并刷入recovery ROOT

    首先下载工具链接:https://pan.baidu.com/s/1o9xzTEi密码:7s7a 备用连接:https://pan.baidu.com/s/1bq47TMn 本篇教程教你如何傻瓜式解锁 ...

  5. 查看Oracle数据库表空间大小,是否需要增加表空间的数据文件

    在数据库管理中,磁盘空间不足是DBA都会遇到的问题,问题比较常见. --1查看表空间已经使用的百分比 Sql代码 select a.tablespace_name,a.bytes/1024/1024 ...

  6. [WIFI插座][阅读记录][SoC][RT5350] 00.目录 RALINK AP SDK 4.1.0.0 USER’s MANUAL

    来源是CSDN,百度网盘下载地址 http://pan.baidu.com/share/link?shareid=3504767505&uk=3426044377   授权声明,略过 免责声明 ...

  7. 闲着无聊时写的一个调用天气 API 的小 Demo

    分为两个部分--调用以及实现,并且由于不想折腾,直接使用了 Console 来调用. 通过firefox直接调用 Main 入口,调用以及输出 调用部分没什么好说的,主要是针对 dynamic 类型的 ...

  8. HDU_1847_基础博弈sg函数

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  9. CDR服装设计-旗袍款式图

    在服装行业中的服装款式设计.图案设计和面料设计等方面,CorelDRAW是一款常用绘图设计软件,用CorelDRAW绘制款式图比手绘更容易表达服装结构.比例.图案.色彩等要素,服装款图主要目的是为了更 ...

  10. js俄罗斯方块

    <html> <style>.c {margin :1px;width:19px;height:19px;background:red;position:absolute;} ...