SetTimer如何修改间隔时钟uElapse
Posted GreenArrowMan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_OBJECT
public:
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的主要内容,如果未能解决你的问题,请参考以下文章