SetTimer如何修改间隔时钟uElapse
在进行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相关推荐
- STM32标准库修改HSI时钟教程
目录 前言 一.官方标准库是如何改变时钟的? 二.修改系统时钟 前言 在我们常用的STM32 Blue Pill(如下图所示)上,一般在学习时都会使用默认的72Mhz晶振.但当我们自己设计电路板时,如 ...
- vivado2019.2修改clk_wizard时钟后报错FREQ_HZ不匹配
vivado2019.2修改clk_wizard时钟后报错FREQ_HZ不匹配 一.问题描述: 使用clock_wizard创建一路时钟,连接到了各个模块,时钟频率设置为300M,编译固件无报错且固件 ...
- Ubuntu修改系统时钟与硬件时钟,以及时钟同步
1.系统时钟就是我们在桌面上看到的时钟,或者在终端使用date命令看到的时钟.系统启动时会去读取系统硬件时钟,之后独立运行. 2.硬件时钟是存储在主板上CMOS里的时钟,也就是BIOS中的时间,关机后 ...
- 修改STM32F030 时钟源为内部晶振(HEI )
修改 SetSysClock()函数,将时钟源由默认的HSE改为内部HSI 时钟 system_stm32f0xx.c static void SetSysClock(void) {__IO uint ...
- 修改gd32f305时钟
如题,移植GD32F305芯片驱动,修改时钟的方法. 硬件外部时钟为8MHz,官方demo文件为25MHz,基于此修改时钟配置. 1.选择system_gd32f30x.c并修改 如下图 1.1)注意 ...
- linux修改mdc时钟,Linux下用xsupplicant或mdc拨号上网
Linux下用xsupplicant或mdc拨号上网 发布时间:2006-09-14 01:14:00来源:红联作者:nxfte 可以用xsupplicant或者mdc-ssd xsupplicant ...
- IMX6UL系列小屏驱动之像素时钟无法修改
文章目录 IMX6UL系列小屏驱动之像素时钟无法修改 默认最小时钟为8437500HZ 1.打补丁 2.更换父时钟 参考文档 IMX6UL系列小屏驱动之像素时钟无法修改 默认最小时钟为8437500H ...
- 修改linux硬时钟,Linux 下用 hwclock 调节系统时钟
由 Linux 内核管理的时钟与硬件时钟并不相同.硬件时钟又叫 BIOS 时钟,在系统关闭后仍在运行,可以通过修改 BIOS 修改硬件时钟.不过当系统已经启动之后,仍可通过 hwclock 命令查看并 ...
- SetTimer的使用问题
SetTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器.计时器属于系统资源,使用完应及时销毁. SetTimer的函数原型如下: UINT_PTR SetTimer( HWN ...
最新文章
- ”device not found“错误原因及解决方法
- 备考一天速通计算机三级网络技术
- Vue.js 条件渲染
- 11 个 Linux 上最佳的图形化 Git 客户端
- 7-4 求下一天 (30 分)
- 下载丨Linux+Oracle 11g+RAC+12cc+adg国内业界最详细生产系统下实施文档
- 系统总线频率和外频有何区别?
- CompactExifLib:访问JPEG文件中的EXIF标签
- 计算机科学中的递归算法是把问题,递归运算法
- 仿博客园个人博客(3)基本完成
- ROS2安装及使用过程中遇到的问题
- ASP.NET编程的十大技巧
- hdwiki 学习笔记 01
- 高等数学(第七版)同济大学 习题7-3 个人解答
- 如何用计算机排版打表格,PPT怎么利用表格来进行排版
- MIMO系统如何获得分集增益(1)
- 区块链赋能金融科技!2018 PPP全球数字资产投资峰会在京召开
- ACdream - 1069 - 无耻的出题人
- python调用高德地图地理编码/逆地理编码
- Windows 下 VS 配置 OpenGL 环境