当前位置: 首页 > article >正文

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

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

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

这次课程我们需要用的函数=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.kler.cn/a/578525.html

相关文章:

  • L33.【LeetCode笔记】循环队列(数组解法)
  • Spring Boot 项目中 `Query` 后缀对象的放置位置
  • 《C陷阱与缺陷》读书笔记(一)
  • Sqli-labs 1-20
  • 使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出
  • 开放充电点协议(OCPP)技术解析:架构演进与通信机制 - 慧知开源充电桩平台
  • Deeplabv3+改进2:添加A2Attention注意力机制|有效涨点
  • VUE2脚手架的下载与安装
  • 基于SpringBoot+MyBatis+MySQL+Vue的智能家居管理系统设计与实现(附源码+数据库+毕业论文)
  • Django与视图
  • 英文字体:现代复古美学精致细节浓缩式衬线排版logo标题艺术字体 La Luxes Serif
  • R语言和RStudio安装
  • Xenium数据分析 | 数据预处理、单细胞降维聚类、细胞类型定义
  • 《几何原本》命题I.24
  • VBA 根据日期字符串 返回日期格式(只能识别部分常用格式)
  • 解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统
  • IO多路复用实现并发服务器
  • 三、滑动窗口——9. 找到字符串中所有字母异位词
  • c++20 在 <chrono> 中的 日历 和 时区 库
  • cmd中有cl但是conda虚拟环境没用cl