使用Windows SetTimer()函数

5 winapi visual-c++

我对SetTimer()函数感到困惑.

SetTimer()有三个参数:

SetTimer(1,2000,Timerflow);
Run Code Online (Sandbox Code Playgroud)

但是我见过另一个版本的SetTimer,它带有四个参数:

SetTimer(NULL,1,2000,Timerflow);
Run Code Online (Sandbox Code Playgroud)

这两个功能有什么区别?

我知道SetTimer()三个参数.但是当我尝试四个参数SetTimer()函数时,我得到错误:

error C2660: 'SetTimer' : function does not take 4 parameters
Run Code Online (Sandbox Code Playgroud)

那么主要区别是什么以及导致此错误的原因是什么?

Ric*_*dle 6

4参数版本是普通的Win32 API版本,第一个参数是窗口句柄.

3参数版本是MFC的CWnd类的成员,并且与您调用它的CWnd实例的窗口句柄一起使用.

如果需要在CWnd派生对象的方法中调用4参数Win32 API,请执行以下操作:

::SetTimer(NULL, 1, 2000, Timerflow);
Run Code Online (Sandbox Code Playgroud)


小智 4

唯一名为 SetTimer 的 Windows API 采用四个参数。据推测,另一个是 MFC 或其他框架的一部分,并且第一个参数由您调用它的对象隐含。例如:

CWnd * w = .... // get window somehow
w->SetTimer(1,2000,Timerflow);
Run Code Online (Sandbox Code Playgroud)