我需要计时器才能每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/

10-11 04:48