在进行Windows程序开发时,经常会用到Windows的API,SetTimer是Windows API中提供的定时器,在C++开发中使用起来还是比较方便的。

这篇文章主要介绍下修改SetTimer的间隔时钟的方法:在SetTimer时给定时钟3s触发一次,如果我们现在想修改为间隔2s触发一次,该如何做呢?

我用QT做了一个简单的例子,去实现了一个简单的demo,界面上有个按钮,点击按钮可以切换SetTimer的间隔时间。

运行结果如下:

主要思路是:

调用SetTimer的时候会返回一个TimerID,修改SetTimer的使用TimerID就可以了。

头文件QtTestSetTimer.h:

#pragma once#include <QtWidgets/QWidget>
#include <QtWidgets/QPushButton>class QtTestSetTimer : public QWidget
{Q_OBJECTpublic:QtTestSetTimer(QWidget *parent = Q_NULLPTR);~QtTestSetTimer();protected:void slotChangeTimer(bool bClick);protected:QPushButton *m_pChangeTimer = nullptr;
};

QtTestSetTimer.cpp:

#include "QtTestSetTimer.h"
#include <QDebug>
#include <windows.h>
#include <QDateTime>UINT_PTR g_TimerID = 0;void __stdcall TimerProc(HWND hwnd, UINT message, UINT_PTR iTimerID, DWORD dwTime)
{qDebug() << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
}QtTestSetTimer::QtTestSetTimer(QWidget *parent): QWidget(parent)
{m_pChangeTimer = new QPushButton(this);m_pChangeTimer->setText("3s");m_pChangeTimer->setCheckable(true);connect(m_pChangeTimer, &QPushButton::clicked, this, &QtTestSetTimer::slotChangeTimer);g_TimerID = ::SetTimer(NULL, 0, 3000, TimerProc);qDebug() << "Now Timeout 3s:";
}QtTestSetTimer::~QtTestSetTimer()
{::KillTimer(NULL, g_TimerID);g_TimerID = 0;
}void QtTestSetTimer::slotChangeTimer(bool bClick)
{if (bClick){m_pChangeTimer->setText("2s");::SetTimer(NULL, g_TimerID, 2000, TimerProc);qDebug() << "Now Timeout 2s:";}else{m_pChangeTimer->setText("3s");::SetTimer(NULL, g_TimerID, 3000, TimerProc);qDebug() << "Now Timeout 3s:";}
}

main.cpp:

#include "QtTestSetTimer.h"
#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);QtTestSetTimer w;w.show();return a.exec();
}

源码下载,源码与上述代码一致(收费):QtTestSetTimer.zip-C++文档类资源-CSDN下载

SetTimer如何修改间隔时钟uElapse相关推荐

  1. STM32标准库修改HSI时钟教程

    目录 前言 一.官方标准库是如何改变时钟的? 二.修改系统时钟 前言 在我们常用的STM32 Blue Pill(如下图所示)上,一般在学习时都会使用默认的72Mhz晶振.但当我们自己设计电路板时,如 ...

  2. vivado2019.2修改clk_wizard时钟后报错FREQ_HZ不匹配

    vivado2019.2修改clk_wizard时钟后报错FREQ_HZ不匹配 一.问题描述: 使用clock_wizard创建一路时钟,连接到了各个模块,时钟频率设置为300M,编译固件无报错且固件 ...

  3. Ubuntu修改系统时钟与硬件时钟,以及时钟同步

    1.系统时钟就是我们在桌面上看到的时钟,或者在终端使用date命令看到的时钟.系统启动时会去读取系统硬件时钟,之后独立运行. 2.硬件时钟是存储在主板上CMOS里的时钟,也就是BIOS中的时间,关机后 ...

  4. 修改STM32F030 时钟源为内部晶振(HEI )

    修改 SetSysClock()函数,将时钟源由默认的HSE改为内部HSI 时钟 system_stm32f0xx.c static void SetSysClock(void) {__IO uint ...

  5. 修改gd32f305时钟

    如题,移植GD32F305芯片驱动,修改时钟的方法. 硬件外部时钟为8MHz,官方demo文件为25MHz,基于此修改时钟配置. 1.选择system_gd32f30x.c并修改 如下图 1.1)注意 ...

  6. linux修改mdc时钟,Linux下用xsupplicant或mdc拨号上网

    Linux下用xsupplicant或mdc拨号上网 发布时间:2006-09-14 01:14:00来源:红联作者:nxfte 可以用xsupplicant或者mdc-ssd xsupplicant ...

  7. IMX6UL系列小屏驱动之像素时钟无法修改

    文章目录 IMX6UL系列小屏驱动之像素时钟无法修改 默认最小时钟为8437500HZ 1.打补丁 2.更换父时钟 参考文档 IMX6UL系列小屏驱动之像素时钟无法修改 默认最小时钟为8437500H ...

  8. 修改linux硬时钟,Linux 下用 hwclock 调节系统时钟

    由 Linux 内核管理的时钟与硬件时钟并不相同.硬件时钟又叫 BIOS 时钟,在系统关闭后仍在运行,可以通过修改 BIOS 修改硬件时钟.不过当系统已经启动之后,仍可通过 hwclock 命令查看并 ...

  9. SetTimer的使用问题

    SetTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器.计时器属于系统资源,使用完应及时销毁. SetTimer的函数原型如下: UINT_PTR SetTimer( HWN ...

最新文章

  1. ”device not found“错误原因及解决方法
  2. 备考一天速通计算机三级网络技术
  3. Vue.js 条件渲染
  4. 11 个 Linux 上最佳的图形化 Git 客户端
  5. 7-4 求下一天 (30 分)
  6. 下载丨Linux+Oracle 11g+RAC+12cc+adg国内业界最详细生产系统下实施文档
  7. 系统总线频率和外频有何区别?
  8. CompactExifLib:访问JPEG文件中的EXIF标签
  9. 计算机科学中的递归算法是把问题,递归运算法
  10. 仿博客园个人博客(3)基本完成
  11. ROS2安装及使用过程中遇到的问题
  12. ASP.NET编程的十大技巧
  13. hdwiki 学习笔记 01
  14. 高等数学(第七版)同济大学 习题7-3 个人解答
  15. 如何用计算机排版打表格,PPT怎么利用表格来进行排版
  16. MIMO系统如何获得分集增益(1)
  17. 区块链赋能金融科技!2018 PPP全球数字资产投资峰会在京召开
  18. ACdream - 1069 - 无耻的出题人
  19. python调用高德地图地理编码/逆地理编码
  20. Windows 下 VS 配置 OpenGL 环境

热门文章

  1. 线下实体店怎么引流?利用抖音线上推广店铺,【实操】
  2. mysql删除用户的两种方法
  3. python 爬取视频
  4. python爬取视频评论数据
  5. 微信小程序 - iPhoneX 刘海屏适配
  6. 新必应(New Bing)申请教程
  7. 三国志战略版:官渡之战_新阵容解读_刘备
  8. html页面间的跳转及导航栏制作
  9. 10种甜品及蛋糕的制作配方及教程
  10. 2k2实用球员_NBA2kol2球员选择哪些好?