C语言学习day25:WinAPI编程进阶07-游戏辅助时钟周期事件、定时器消息

server/2025/3/10 11:29:44/

接下来我们说一下时间周期(定时器)事件

我们接下来继续用上一章中的代码来举例

这次课程我们需要用的函数=SetTimer()函数和KillTimer()函数

SetTimer()

语法:

UINT_PTR SetTimer([in, optional] HWND      hWnd,[in]           UINT_PTR  nIDEvent,[in]           UINT      uElapse,[in, optional] TIMERPROC lpTimerFunc
);

参数一:

类型:HWND
要与计时器关联的窗口的句柄。 此窗口必须由调用线程拥有。 如果 hWnd 的 NULL 值与现有计时器的 nIDEvent 一起传入,则替换该计时器的方式与现有非 NULL hWnd 计时器相同。

参数二:

类型: UINT_PTR
非零计时器标识符。 如果 hWnd 参数为 NULL,并且 nIDEvent 与现有计时器不匹配,则忽略它并生成新的计时器 ID。

参数三:

类型: UINT
超时值(以毫秒为单位)。

参数四:

类型: TIMERPROC
指向在超时值过后要通知的函数的指针。 有关 函数的详细信息,请参阅 TimerProc。

代码:

// 添加全局变量
int g_State = 0;case WM_KEYDOWN:if (GetAsyncKeyState(VK_F1) != 0){if (g_State == 0){// 开启时钟SetTimer(hwnd, 1, 2000, NULL);g_State = 1;}

KillTimer()

语法:

参数一:

类型:HWND
与指定计时器关联的窗口的句柄。 此值必须与传递给创建计时器的 SetTimer 函数的 hWnd 值相同。

参数二 :

类型: UINT_PTR
要销毁的计时器。 如果传递给 SetTimer 的窗口句柄有效,则此参数必须与 nIDEvent 相同
传递给 SetTimer 的值。 如果应用程序在 hWnd 设置为 NULL 的情况下调用 SetTimer,则此参数必须是 SetTimer 返回的计时器标识符。

代码

else{// 关闭时钟KillTimer(hwnd, 1);MessageBoxA(NULL,"已关闭","温馨提示",MB_OK);g_State = 0;}

此外:

我们还加了一个判定,用来处理时钟消息。以下代码也就是说,每隔2s弹出一个框

代码:

case WM_TIMER:{MessageBoxA(NULL, "开启成功", "温馨提示", MB_OK);break;}

 


http://www.ppmy.cn/server/173924.html

相关文章

前端快速搭建Node服务(解决跨域问题)

服务搭建应用场景 前端模块化基本成为了不可或缺的一步了,最近自己学习的时候,用的cdn引入的vue,使用了EsModule语法,但使用import语法,会产生跨域问题,故自己本地搭建一个服务(不需要下载npm包…

Linux下的shell指令(二)

作业 1> 编写脚本,实现文件分类的功能。 编写脚本的过程中,要特别注意路径问题 1.判断用户的家目录($HOME)下是否存在 file_dir 这个目录文件 如果存在,则询问用户是否清空,如果用户输入的是Y,则清空该目录文…

KMP 算法的 C 语言实现

# include <stdio.h> # include <stdlib.h> # include <string.h>// 打印 KMP 匹配结果. void ColorPrint(char *T, int *result, int result_size, int m) {int green_size strlen("\x1b[31m");int reset_size strlen("\x1b[0m");cha…

优维眼中的Manus:AI工程化思维重构Agent的运维端启示

继DeepSeek后&#xff0c;中国AI叕特么行了&#xff01; 2025年3月6日&#xff0c;AI行业被两则消息同时点燃&#xff1a;一边是阿里开源QwQ-32B模型以极简参数追平顶尖闭源产品&#xff0c;另一边则是名不见经传的Monica团队推出通用Agent产品Manus&#xff0c;在GAIA基准测试…

解锁AIGC新时代:通义万相2.1与蓝耘智算平台的完美结合引领AI内容生成革命

前言 通义万相2.1作为一个开源的视频生成AI模型&#xff0c;在发布当天便荣登了VBench排行榜的榜首&#xff0c;超越了Sora和Runway等业内巨头&#xff0c;展现出惊人的潜力。模型不仅能够生成1080P分辨率的视频&#xff0c;而且没有时长限制&#xff0c;能够模拟自然动作&…

泛型、泛型上限、泛型下限、泛型通配符

DAY8.1 Java核心基础 泛型 Generics 是指在类定义时不指定类中信息的具体数据类型&#xff0c;而是用一个标识符来代替&#xff0c;当外部实例化对象时再指定具体的数据类型。 在定义类或者接口时不明确指定类中信息的具体数据类型&#xff0c;在实例化时再来指定具体的数据类…

基于单片机的室外休闲智能座椅设计(论文+源码)

1系统总体设计 本课题为基于单片机的室外休闲智能座椅的设计&#xff0c;其可以实现温湿度检测&#xff0c;座椅加热&#xff0c;自动照明&#xff0c;背靠调节等工作。整个系统架构如图2.1所示其中包括了按键模块&#xff0c;温湿度检测模块&#xff0c;显示模块&#xff0c;加…

[FE] React 初窥门径(五):React 组件的加载过程(commit 阶段)

1. 回顾 前一篇文章我们看到&#xff0c;ReactDOM.render 总共包含这些步骤&#xff0c; 然后介绍了 performSyncWorkOnRoot 做的事情&#xff0c;它主要做了两件事&#xff0c; renderRootSync 可称之为 render 阶段&#xff1a;创建了一颗 Fiber Tree&#xff08;包含 html …