在Console无图形界面程序使用SetTimer

news2024/9/23 11:20:08
UpdateData(true);将控件的值赋值给成员变量
UpdateData(false);将成员变量的值赋值给控件
UpdateData;用来刷新当前对话框
也就是说:当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。

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

在Windows开发中免不了一些场景中是无界面的程序。但是我们又需要使用Windows API中的定时器SetTimer来进行定时处理一些任务。


我们都知道Windows是消息驱动的,那定时器SetTimer的超时也是通过消息来驱动的,Console进程主线程没有消息的循环分发,Windows是不会调用我们的超时回调函数的。


这种情况下,我们需要如何处理呢?

我们可以主动在当前线程中添加一个消息循环,来使当前线程中的消息分发下去,从而使定时器可以正常的运行。

在Demo中我创建了一个定时器,设置超时时间为3s,在超时回调函数中,获取当前时间并输出,可以比较清晰的看到执行的结果。
 

#include <iostream>
#include <windows.h>

VOID CALLBACK TimerProc(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTimer)
{
	//获取系统时间
	SYSTEMTIME time;
	GetLocalTime(&time);
	char dateTimeStr[200] = { 0 };
	sprintf_s(dateTimeStr, "%d-%02d-%02d %02d:%02d:%02d", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);

	std::cout << dateTimeStr << std::endl;
}

int main()
{
	UINT_PTR uTimerID = SetTimer(NULL, 0, 1000, TimerProc);// 3000三秒, TimerProc);

	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		DispatchMessage(&msg);
	}

	KillTimer(NULL, uTimerID);

	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/758905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android手写占位式插件化框架之apk解析原理系统源码分析

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 上一篇文章 Android手写占位式插件化框架之Activity通信、Service通…

服务器与客户端数据交换(Rest API)

服务器端 Rest API 输出普通对象 AjaxResponse jsonObj AjaxResponse.success(body);log.info("{} json:{}",RestResponseBodyAdvice.class,jsonObj.toString());return jsonObj;AjaxResponse(successtrue, code200, messageThis is normal, contentUserVO(id1, …

模拟实现strcpy

隔了一段时间没有更新博客了&#xff0c;今天给大家带来的是&#xff1a;如何用C语言模拟实现 strcpy 函数 赶时间的朋友建议直接复制走代码&#xff0c;我会在下面详细剖析代码 引言 在计算机编程中&#xff0c;字符串处理是一个非常重要的部分。strcpy函数是C语言中用于复制…

16 | 视图:如何实现服务和数据在微服务各层的协作?

目录 服务的协作 1. 服务的类型 2. 服务的调用 微服务内跨层 微服务之间的服务调用 领域事件驱动 3. 服务的封装与组合 基础层 领域层 应用层 用户接口层 4. 两种分层架构的服务依赖关系 松散分层架构的服务依赖 严格分层架构的服务依赖 数据对象视图 基础层 领…

electron-updater 报错 Cannot find module ‘debug‘

使用 electron-updater 更新 electron 应用&#xff0c;打完包安装启动出现这种报错&#xff1a;Cannot find module debug&#xff0c;Cannot find module builder-util-runtime。 项目依赖 {"electron": "^24.4.1","electron-builder": "…

【机器学习】了解 AUC - ROC 曲线

一、说明 在机器学习中&#xff0c;性能测量是一项基本任务。因此&#xff0c;当涉及到分类问题时&#xff0c;我们可以依靠AUC - ROC曲线。当我们需要检查或可视化多类分类问题的性能时&#xff0c;我们使用AUC&#xff08;曲线下面积&#xff09;ROC&#xff08;接收器工作特…

第68篇:javafx编写扫描器UI界面的线程死锁问题及坑点总结

Part1 前言 大家好&#xff0c;我是ABC_123。之前编写工具的图形界面都是用swing框架来实现&#xff0c;但是swing框架已经10几年没有更新了&#xff0c;很多控件使用起来特别麻烦&#xff0c;然后界面美工需要花费很大精力。为了跟上知识更新的节奏&#xff0c;ABC_123最近花…

语言模型的自洽性思维链推理技术

论文标题&#xff1a;Self-Consistency Improves Chain of Thought Reasoning in Language Models 论文链接&#xff1a;https://arxiv.org/abs/2203.11171 论文来源&#xff1a;ICLR 2023 一、概述 尽管语言模型在一系列NLP任务中展现出了显著的成功&#xff0c;但它们在推理能…

django使用channels实现webSocket启动失败

问题描述 使用channels启动ASGI结果却是普通启动&#xff0c;如下&#xff1a; Watching for file changes with StatReloader Performing system checks...System check identified no issues (0 silenced). July 15, 2023 - 18:23:49 Django version 4.2, using settings s…

chatGPT 和AlphaGo下围棋,谁赢?垂域大模型有戏么?

这边来的少&#xff0c;但发个文章通报下近况&#xff0c;长期做AI产研、投融资工作后&#xff0c;后续主要在企业数字化与大模型结合的方向上&#xff0c;后续进展还是请关注&#xff1a;琢磨事。 上一篇提到最终大模型的格局很可能是有一个偏通用大模型&#xff0c;比如chatG…

Linux系统编程——文件(ioctl 函数)

文章目录 概念用户空间 ioctl驱动程序 ioctlioctl 在用户与驱动之间的协议——命令码实例分析ioctl-test.hioctl-test-driver.cioctl-test.c 概念 ioctl 是设备驱动程序中设备控制接口函数&#xff0c;一个字符设备驱动通常会实现设备打开、关闭、读、写等功能&#xff0c;在一…

GitOps自问自答

GitOps自提出以来受到很多关注&#xff0c;被认为是云原生最佳实践之一。这篇文章回答了关于GitOps的常见问题&#xff0c;帮助感兴趣的相关人员更好理解这一实践。原文: GitOps[1] 自从Weaveworks在2017年提出GitOps以来&#xff0c;已经在Twitter和KubeCon上引发了不少争议。…

Qt实现思维导图功能6『鹰眼视图』

前文链接&#xff1a;Qt实现思维导图功能5『纵向分布模式』 百度网盘体验地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1xotlkSPfG7E_37y_XPfDng 提取码&#xff1a;5li7效果图 1、动态演示效果&#xff1a; 思维导图-鹰眼视图 2、静态展示图片&#xff1a; 新…

Econ3107-econ5116-小组作业知识点精讲

对本文有疑问可以加微信 Tutor_0914联系。也可以访问我的个人辅导网站 &#xff1a; tutoryou 基本概念 option期权 期权&#xff08;Option&#xff09;&#xff0c;是一种选择权&#xff0c;指是一种能在未来某特定时间以特定价格买入或卖出一定数量的某种特定商品的权利…

Linux 知识学习总结

常用命名 du 作用&#xff1a;显示指定目录或文件所占磁盘空间大小。 示例&#xff1a; du -h 以K&#xff0c;M&#xff0c;G为单位自动适配显示 lxlx-virtual-machine:~/test/video$ du -h 1.2G du -m 指定以1MB为单位显示 lxlx-virtual-machine:~/test/video$ du -m 12…

Python潮流周刊#11:如何使用 Golang 运行 Python 代码?

你好&#xff0c;我是猫哥。这里每周分享优质的 Python 及通用技术内容&#xff0c;大部分为英文&#xff0c;已在小标题注明。&#xff08;标题取自其中一则分享&#xff0c;不代表全部内容都是该主题&#xff0c;特此声明。&#xff09; 本周刊精心筛选国内外的 250 信息源&a…

​注意力机制中的掩码详解

注意力机制的掩码允许我们发送不同长度的批次数据一次性的发送到transformer中。在代码中是通过将所有序列填充到相同的长度&#xff0c;然后使用“attention_mask”张量来识别哪些令牌是填充的来做到这一点&#xff0c;本文将详细介绍这个掩码的原理和机制。 我们先介绍下如果…

(简单)设计哈希集合 Java

为了实现哈希集合这一数据结构&#xff0c;有以下几个关键问题需要解决&#xff1a; 哈希函数&#xff1a;能够将集合中任意可能的元素映射到一个固定范围的整数值&#xff0c;并将该元素存储到整数值对应的地址上冲突处理&#xff1a;由于不同元素可能映射到相同的整数值&…

SpringBoot读取配置的方式

读取配置的几种方式 Spring Boot提供了多种方式来读取配置&#xff0c;下面是其中几种常用的方式&#xff1a; 使用application.properties或application.yml文件&#xff1a;在Spring Boot项目的classpath根目录下&#xff0c;可以创建一个名为application.properties或appli…

oc基本控件3

UIButton // // ViewController.m // OcDemoTest // // Created by Mac on 2023/7/14. //#import "ViewController.h"interface ViewController ()endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];// 1 创建按钮对象UIButton *button…