MFC 中,全局SetTimer函数怎么用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 中,全局SetTimer函数怎么用?相关的知识,希望对你有一定的参考价值。

函数原型:SetTimer(HWND hWnd,UINT nIDEvent,UINT uElapse,TIMERPROC lpTimerFunc);
要求:不使用系统的那个OnTimer(nIDEvent)作为回调函数,也就是第四个参数不能是NULL。
问:这时自己的回调函数怎么写?
对应的SetTimer函数该怎么写?
TIMERPROC 是一个什么类型?
这都明白,就问怎么写代码。比方说回调函数写为:
void CALLBACK User::FuncA(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
SetTimer写为:
SetTimer(hWnd,nIDEvent,uElapse,FuncA);
是否正确?

全局SetTimer函数?你希望自己写消息,直接写VOID CALLBACK TimerProc( HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);
将这个函数作为全局,不就行了?
回调函数是全局的,SetTimer可以是类内部的
参考技术A The TIMERPROC type defines a pointer to this callback function
VOID CALLBACK TimerProc( HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);
Parameters

hwnd
[in] Handle to the window associated with the timer.
uMsg
[in] Specifies the WM_TIMER message.
idEvent
[in] Specifies the timer's identifier.
dwTime
[in] Specifies the number of milliseconds that have elapsed since the system was started. This is the value returned by the GetTickCount function.
用的时候,把settimer的第四个参数设为你指定的回调函数的函数名就行了
参考技术B 不正确,不能用类函数,要全局函数 或者类静态函数

回调函数
具体类型看帮助

写一个相同类型的全局函数即可

mfc 线程里设置定时器settimer,但是执行不道OnTimer里

参考技术A 您好,这样的:
因为,在调用构造函数时对话框还没有初始化,此时的SetTimer对对话框无效,
只有在对话框进行初始化时才能设定其定时器,
或者在对话框初始化后SetTimer()也行。
不要在构造函数中SetTimer,你如果一定要自动执行的化可以在OnInitDialog或OnShowWindow下面做。
还有就是100毫秒这个参数会使OnTimer下的程序在1秒种执行10次,你在里面放一个MessageBox是不是太。
另外,如果你要试一下它到底有没有执行的话,可以把SetTimer的参数设大一点,比如2000
然后用AfxMessageBox
不可你要做好快速反应结束程序的准备,要不然会有。

以上是关于MFC 中,全局SetTimer函数怎么用?的主要内容,如果未能解决你的问题,请参考以下文章

MFC里SetTimer怎么使用

settimer 怎么用

mfc中的settimer函数是做啥的里面的参数呢

mfc怎么设置全局变量

mfc 线程里设置定时器settimer,但是执行不道OnTimer里

猎豹MFC--定时器SetTimer KillTimer