请教MFC里面SetTimer的回调函数怎么写呢
请问MFC里面SetTimer的回调函数如何写呢?
请问MFC里面SetTimer的回调函数如何写呢?
注意,我这是非窗口的,所以要使用回调函数,不能直接SetTimer(1,1000,NULL);
我尝试了使用static void CALLBACK MyTimerProc;但是静态函数不能访问非静态成员了,这该如何是好呢?
谢谢~
------解决方案--------------------
参数1窗口hwnd,
试试 FromHandle(hwnd)返回窗口指针
------解决方案--------------------
使用GCxxThunk或者参考以下的代码:
请问MFC里面SetTimer的回调函数如何写呢?
注意,我这是非窗口的,所以要使用回调函数,不能直接SetTimer(1,1000,NULL);
我尝试了使用static void CALLBACK MyTimerProc;但是静态函数不能访问非静态成员了,这该如何是好呢?
谢谢~
------解决方案--------------------
参数1窗口hwnd,
试试 FromHandle(hwnd)返回窗口指针
------解决方案--------------------
使用GCxxThunk或者参考以下的代码:
- C/C++ code
#include "windows.h" #include "stdio.h" VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime); int main(int argc, char* argv[]) { UINT_PTR nTimerID = SetTimer(NULL, 0, 5000, TimerProc); printf("Timer created. ID = %d\n", nTimerID); MSG msg; while(GetMessage(&msg, 0, 0, 0)) { DispatchMessage(&msg); } return 0; } VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) { printf("%08x, %08x, %d, %d, %d\n", hwnd, uMsg, idEvent, dwTime, GetTickCount()); }
------解决方案--------------------
加个WM_TIMER的消息映射函数即可。