我需要计时器才能每1秒钟启动一次功能。
我已经尝试过SetTimer
,我的代码:
const UINT_PTR TIMER_ID = 1000;
DWORD DownloadThread()
{
SetTimer(NULL, TIMER_ID, 1000, (TIMERPROC)DownloadSpeedCounter);
/*some stuff*/
}
void DownloadSpeedCounter()
{
/*some stuff*/
}
我无法编译此代码并获得
error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'TIMERPROC'
也是类成员方法。
最佳答案
这是因为您试图将普通函数用作应用程序定义的回调函数。您可能正在寻找的是此应用程序定义的回调函数,该函数可能看起来像这样:
VOID CALLBACK DownloadSpeedCounter(
HWND hwnd, // handle to window for timer messages
UINT message, // WM_TIMER message
UINT idTimer, // timer identifier
DWORD dwTime) {
/* some stuff */
}
有关对计时器使用回调函数的更多信息,请参见this article。
关于c++ - WinApi SetTimer无法编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18311743/