SetTimer的使用问题 请问各位大哥: MFC中的SetTimer函数的第三个参数有什么用!!谢谢!!最好能有个例子!1感激不尽!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那是回调函数写一个如下格式的回调函数void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime); 定时器的使用:三种方法如果您需要在整个程序执行期间都使用定时器,那么您将得从WinMain函数中或者在处理WM_CREATE消息时呼叫SetTimer,并在退出WinMain或响应WM_DESTROY消息时呼叫KillTimer。根据呼叫SetTimer时使用的参数,可以下列三种方法之一使用定时器。方法一这是最方便的一种方法,它让Windows把WM_TIMER消息发送到应用程序的正常窗口消息处理程序中,SetTimer呼叫如下所示:SetTimer (hwnd, 1, uiMsecInterval, NULL) ; 第一个参数是其窗口消息处理程序将接收WM_TIMER消息的窗口句柄。第二个参数是定时器ID,它是一个非0数值,在整个例子中假定为1。第三个参数是一个32位无正负号整数,以毫秒为单位指定一个时间间隔,一个60,000的值将使Windows每分钟发送一次WM_TIMER消息。您可以通过呼叫KillTimer (hwnd, 1) ;方法二设定定时器的第一种方法是把WM_TIMER消息发送到通常的窗口消息处理程序,而第二种方法是让Windows直接将定时器消息发送给您程序的另一个函数。SetTimer (hwnd, iTimerID, iMsecInterval, TimerProc) ;方法三设定定时器的第三种方法类似于第二种方法,只是传递给SetTimer的hwnd参数被设定为NULL,并且第二个参数(通常为定时器ID)被忽略了,最后,此函数传回定时器ID:iTimerID = SetTimer (NULL, 0, wMsecInterval, TimerProc) ; 如果没有可用的定时器,那么从SetTimer传回的iTimerID值将为NULL。KillTimer的第一个参数(通常是窗口句柄)也必须为NULL,定时器ID必须是SetTimer的传回值:KillTimer (NULL, iTimerID) ; 统一,mfc中可以不用回到函数 从程序中调用另一个程序的问题 请教:如何实现以下特定格式曲线功能? 如何在windows下读写png文件 如何知道是谁调用了自己(DLL)? 请问大家用什么工具写VC++ 什么叫阻塞和非阻塞? 简单问题:使Edit显示成下陷需要把Style设置成什么? 同样的代码,在vc6和vs2010都编译通过,但是计算结果不一样。 诡异的access,怎么调用里面的数据 如何使ListView的子项可以被选中,并支持编辑和复制? 我用ODBC来取sqlserver数据库中的表,怎么样才能只得到用户建立的表,而过滤掉系统自己创建的表和其他东西呢? 哪里有MSDN下载。50分
写一个如下格式的回调函数void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
如果您需要在整个程序执行期间都使用定时器,那么您将得从WinMain函数中或者在处理WM_CREATE消息时呼叫SetTimer,并在退出WinMain或响应WM_DESTROY消息时呼叫KillTimer。根据呼叫SetTimer时使用的参数,可以下列三种方法之一使用定时器。
方法一
这是最方便的一种方法,它让Windows把WM_TIMER消息发送到应用程序的正常窗口消息处理程序中,SetTimer呼叫如下所示:
SetTimer (hwnd, 1, uiMsecInterval, NULL) ;
第一个参数是其窗口消息处理程序将接收WM_TIMER消息的窗口句柄。第二个参数是定时器ID,它是一个非0数值,在整个例子中假定为1。第三个参数是一个32位无正负号整数,以毫秒为单位指定一个时间间隔,一个60,000的值将使Windows每分钟发送一次WM_TIMER消息。
您可以通过呼叫
KillTimer (hwnd, 1) ;方法二
设定定时器的第一种方法是把WM_TIMER消息发送到通常的窗口消息处理程序,而第二种方法是让Windows直接将定时器消息发送给您程序的另一个函数。
SetTimer (hwnd, iTimerID, iMsecInterval, TimerProc) ;方法三
设定定时器的第三种方法类似于第二种方法,只是传递给SetTimer的hwnd参数被设定为NULL,并且第二个参数(通常为定时器ID)被忽略了,最后,此函数传回定时器ID:
iTimerID = SetTimer (NULL, 0, wMsecInterval, TimerProc) ;
如果没有可用的定时器,那么从SetTimer传回的iTimerID值将为NULL。
KillTimer的第一个参数(通常是窗口句柄)也必须为NULL,定时器ID必须是SetTimer的传回值:
KillTimer (NULL, iTimerID) ;