我这个类是窗口类创建的,但不是继承的CWND,继承interface ICommonTask{}
SetMyTimer(1000);
void CDownLoad::SetMyTimer(UINT nElapse)
{
m_nTimerID = SetTimer(NULL,NULL,nElapse,MyTimerProc);
m_sTimeMap[m_nTimerID] = this;
}
void CALLBACK CDownLoad::MyTimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
((CDownLoad *)m_sTimeMap[nTimerid])->DeviceUpdateProgess();
}
6 个解决方案
#1
一个简单的例子:
#include "stdafx.h"
#include <Windows.h>
VOID CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
static int i = 0;
printf("========%d========\r\n", i++);
}
int _tmain(int argc, _TCHAR* argv[])
{
SetTimer(NULL, NULL, 1000, TimerProc);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
#2
我程序的问题在哪
#3
你既然把回调函数放到了类中,这个回调函数应该是静态的,你是不是这样做的?
再则,你SetMyTimer函数执行了吗?
如果以上都没问题,试试下面的:
::SetTimer(NULL, NULL, nElapse, (TIMERPROC)MyTimerProc);
再则,你SetMyTimer函数执行了吗?
如果以上都没问题,试试下面的:
::SetTimer(NULL, NULL, nElapse, (TIMERPROC)MyTimerProc);
#4
m_nTimerID = SetTimer(NULL,NULL,nElapse,MyTimerProc);
MyTimerProc是成员函数,SetTimer的回调函数不接受成员函数,你怎么编译通过的?
难道是你 #define CALLBACK static
MyTimerProc是成员函数,SetTimer的回调函数不接受成员函数,你怎么编译通过的?
难道是你 #define CALLBACK static
#5
MyTimerProc 应该是要改成static的
#6
当然是静态的
#1
一个简单的例子:
#include "stdafx.h"
#include <Windows.h>
VOID CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
static int i = 0;
printf("========%d========\r\n", i++);
}
int _tmain(int argc, _TCHAR* argv[])
{
SetTimer(NULL, NULL, 1000, TimerProc);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
#2
我程序的问题在哪
#3
你既然把回调函数放到了类中,这个回调函数应该是静态的,你是不是这样做的?
再则,你SetMyTimer函数执行了吗?
如果以上都没问题,试试下面的:
::SetTimer(NULL, NULL, nElapse, (TIMERPROC)MyTimerProc);
再则,你SetMyTimer函数执行了吗?
如果以上都没问题,试试下面的:
::SetTimer(NULL, NULL, nElapse, (TIMERPROC)MyTimerProc);
#4
m_nTimerID = SetTimer(NULL,NULL,nElapse,MyTimerProc);
MyTimerProc是成员函数,SetTimer的回调函数不接受成员函数,你怎么编译通过的?
难道是你 #define CALLBACK static
MyTimerProc是成员函数,SetTimer的回调函数不接受成员函数,你怎么编译通过的?
难道是你 #define CALLBACK static
#5
MyTimerProc 应该是要改成static的
#6
当然是静态的