使用的一个百度AI代码生成网站: https://yiyan.baidu.com/
定时器的实现示例:
新建一个程序
编写ConsoleApplication1.cpp
#include <iostream> #include <Windows.h> using namespace std; #pragma comment(lib, "User32.lib") //首先定义一个计时器计时事件的定义 #define GETLASTINPUTINFO 109 UINT_PTR m_uGetLastInputInfo; //然后写一个Time计时器(具体计时器的生成步骤就不在叙述) void OnTimer() { static int count = 0; count++; cout << count <<endl; if (count >= 4) // 10s { cout << "kill timer" << endl; KillTimer(NULL, m_uGetLastInputInfo); PostQuitMessage(0); } } int main() { m_uGetLastInputInfo = SetTimer(NULL, GETLASTINPUTINFO, 500, (TIMERPROC)OnTimer); // 设置定时器,间隔为1000毫秒(1秒) MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } cout << "end" << endl; return 0; }
说一下其中的坑点吧。
1. 报错无法解析的外部符号
出现_imp的是链接库找不到,那么就到微软搜索SetTimer函数的链接库导入一下。
所以需要用到#pragma comment(lib, "User32.lib")
2. KillTimer不生效
这是分为两种情况,参考链接:https://blog.csdn.net/NKhth/article/details/127952166
如果SetTimer第一个参数是NULL,未指定handle,那么定时器的ID就是它的return值,即m_uGetLastInputInfo。
如果SetTimer第一个参数是hwnd,指定了handle,那么定时器的ID就是它的第二个参数,即GETLASTINPUTINFO。
3. 程序在GetMessage阻塞,结束不了
需要使用PostQuitMessage(0);来发消息结束消息循环
标签:定时器,cout,lib,C++,第五十五,计时器,SetTimer From: https://www.cnblogs.com/smart-zihan/p/18000634