欢迎光临~湖南智能应用科技有限公司-hniat.com
语言选择: 中文版 ∷  英文版

基础知识

SetTimer函数的使用方式

方式一:在控制台下或者没有窗口的地方使用时:

 

示例代码:

void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)

{

SYSTEMTIME sys;

GetLocalTime( &sys );

printf( "M/d/d d:d:d.d xingqi \n",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek);

}

void main()

{

MSG msg;

SetTimer(NULL,230,4000,(TIMERPROC)TimerProc);

while(GetMessage(&msg,NULL,NULL,NULL))

{

if (msg.message == WM_TIMER)

{

TranslateMessage(&msg);

DispatchMessage(&msg);

break; //此处最好有一个这个,不然貌似Killtimer结束不了定时器的样子.

}

}

KillTimer(NULL,230);

}

 

教训: 刚开始的时候以为不用设置消息循环,所以没有写循环,结果执行程序就直接退出了。

 

 

方式二:

 

利用MFC提供的消息机制,主要使用到的是下面两个函数.

 

WINUSERAPI

UINT_PTR

WINAPI

SetTimer(

__in_opt HWND hWnd,

__in UINT_PTR nIDEvent,

__in UINT uElapse,

__in_opt TIMERPROC lpTimerFunc);   //将它设定为NULL,也就是使用系统默认的回调函数

 

 

WINUSERAPI

BOOL

WINAPI

KillTimer(

__in_opt HWND hWnd,

__in UINT_PTR uIDEvent);

 

 

   如果调用SetTimer函数时最后一个参数为NULL,则通过WM_TIMER的消息处理函数来处理定时事件。添加WM_TIMER消息的处理函数的方法是,在VS2010工程的Class View类视图中找到要添加定时器的类,点击右键,选择Properties,显示其属性页,然后在属性页工具栏上点击Messages按钮,下面列表就列出了所有消息,找到WM_TIMER消息,添加消息处理函数。

 

注:如果只有单个SetTimer定时器,可以在函数处理过程中响应WM_TIMER消息,从而添加消息处理代码.

关闭
用手机扫描二维码关闭
二维码