我对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)
那么主要区别是什么以及导致此错误的原因是什么?
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)