- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我正在尝试在 VBA 中实现一个计时器类。为此,我使用了 Windows API 的 SetTimer 和 KillTimer 函数......
这是来自 Msdn 的界面:
UINT_PTR WINAPI SetTimer(
__in_opt HWND hWnd,
__in UINT_PTR nIDEvent,
__in UINT uElapse,
__in_opt TIMERPROC lpTimerFunc
);
Private Declare Function SetTimer Lib "user32" (ByVal Handle As Long, _
ByVal TimerIDHandle As Any, _
ByVal ElapseTime As Long, _
ByVal AddressOfAndYourHandlerFunctionName As Long) As Long
'TimerIDHandle is of Type Any so I can pass Nothing to the function
Dim TimerID As Long
TimerID = SetTimer(Application.hWndAccessApp, ByVal 0&, Timer.Timeout, AddressOf TimeOutHandler)
Private Sub TimeOutHandler(ByVal WindowHandle As Long, _
ByVal TimerMessage As Long, _
ByVal TimerID As Long, _
ByVal ElapsedTime As Long)
最佳答案
有效。如果失败,那么它将返回 0。您在回调中为 TimerID 获得一个 0,因为您在创建计时器时为 nIDEvent 参数传递了一个 0。您需要使用 SetTimer 返回的值来调用 KillTimer()。把它想象成一个计时器“ handle ”。
你永远不会让这段代码在 64 位模式下工作,所以只需将第二个参数声明为 Long。
关于winapi - SetTimer IDEvent 返回值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10043877/
背景 MFC CWnd::SetTimer调用 WinAPI 的 SetTimer简单地。 _AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEve
Timestamp[] lastreply = new Timestamp[100]; replyr = lastreplyr[i].getTime(); System.out.println("Re
感谢您的帮助!其主要目标是停止计时器。但它不起作用。我知道这不起作用,因为我从另一个函数调用局部变量,但如果我将该变量声明为全局变量,则 setTime 会自动启动,这不是我想要的。如何解决这个问题,
在我的一个项目中,我需要高效地安排要反复执行的不同操作,每个操作都有自己的时间间隔。 我一直在想,当我使用 SetTimer函数,后台发生了什么? 是否创建了新线程?它是否在后台运行并占用我的 CPU
我编写的代码在窗口未聚焦时检测按键: // MainHamsterDlg.cpp : implementation file #include "stdafx.h" #include "MainHam
我有一个无窗口计时器(没有 WM_TIMER),它只在给定的时间段过去后触发一次回调函数。它作为 SetTimer()/KillTimer() 实现。时间段足够小:100-300 毫秒。 对于每个如此
代码如下: function _niceTime($minute){ $m = $minute - 5; $date = new DateTime();
下面的代码将日期设置为 2015 年 6 月 7 日午夜。为什么?我的时区是 UTC-07:00 格雷格 Calendar HuntStart = Calendar.getIns
我对SetTimer()函数感到困惑。 SetTimer()具有三个参数: SetTimer(1,2000,Timerflow); 但是,我已经看到了另一个带有四个参数的SetTimer版本: Set
目前我正在尝试在 VBA 中实现一个计时器类。为此,我使用了 Windows API 的 SetTimer 和 KillTimer 函数...... 这是来自 Msdn 的界面: UINT_PTR
我已经基于 Java 版本创建了一个 JavaScript 版本的 Little Man Computer,网址为 http://www.atkinson.yorku.ca/~sychen/resea
Calendar lastEditDate = Calendar.getInstance(); lastEditDate.setTime(rs.getD
此代码导致输出 1。当 setTime 的参数是添加到 1970 年 1 月 1 日午夜的毫秒数时,为什么会这样?当然应该为 0 吗? var d = new Date(); d.setTime(0)
有什么方法可以获取由 SetTimer 函数创建的计时器的当前进度? 最佳答案 这是 Hans 评论的一个实现。单击该按钮会显示距离下一个预定(预期)WM_TIMER 消息的剩余时间。通过在 Debu
这个问题在这里已经有了答案: Can I use a SetTimer() API in a console C++ application? (6 个答案) 关闭 9 年前。 我有以下程序。我想知
我的 C++ 应用程序有一个无窗口计时器,用于定期清理从未(也永远不会)完全处理的潜在通信数据。问题是永远不会调用回调函数。我的类构造函数在返回之前执行以下代码: if ( (this->m_
我需要定时器每 1 秒启动一次功能。 我试过SetTimer,我的代码: const UINT_PTR TIMER_ID = 1000; DWORD DownloadThread() { Se
使用 SetTimer 时这样: SetTimer(hWnd, IDT_TIMER_LONGPROCESSING, 2000, (TIMERPROC) NULL); DoSomethingElse()
我尝试使用 SetTimer API 每隔 X 分钟调用一个函数。所以,我写了这段测试代码 void f() { printf("Hello"); } int main() { SetTimer(
当我尝试使用 Windows SetTimer 函数时,它会为计时器生成一个 IDEvent,即使我已经指定了一个! 这个: SetTimer(0,999,10000,@timerproc); 在:
我是一名优秀的程序员,十分优秀!