函数原型: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);
是否正确?
MFC 中,全局SetTimer函数怎么用?
答案:3 悬赏:40 手机版
解决时间 2021-02-28 17:48
- 提问者网友:最美的风景
- 2021-02-28 04:20
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-02-28 04:55
全局SetTimer函数?你希望自己写消息,直接写VOID CALLBACK TimerProc( HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);
将这个函数作为全局,不就行了?
回调函数是全局的,SetTimer可以是类内部的
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);
将这个函数作为全局,不就行了?
回调函数是全局的,SetTimer可以是类内部的
全部回答
- 1楼网友:蕴藏春秋
- 2021-02-28 07:00
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的第四个参数设为你指定的回调函数的函数名就行了
- 2楼网友:北方的南先生
- 2021-02-28 05:20
mfc settimer函数的用法
1) 函数原型及变形
settimer这个api函数的原型 :
uint_ptr settimer(
hwnd hwnd, // 窗口句柄
uint_ptr nidevent, // 定时器id,多个定时器时,可以通过该id判断是哪个定时器
uint uelapse, // 时间间隔,单位为毫秒
timerproc lptimerfunc // 回调函数
);
注意:设置第二个参数时要注意,如果设置的等待时间比处理时间短,程序就会出问题了。
回调函数:在这个函数里,放入你想要做的事情的代码,你可以将它设定为null,也就是使用系统默认的回调函数,系统默认认的是ontime函数。
例如 :
settimer(m_hwnd,1,1000,null); //一个1秒触发一次的定时器
在mfc程序中settimer被封装在cwnd类中,调用就不用指定窗口句柄了
于是settimer函数的原型变为:
uint settimer(uint nidevent,uint nelapse,void(callback export *lpfntimer)(hwnd,uint ,yint ,dword)) ,用法如:settimer(1,1000,null);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯