各位高人:我在程序中要用到两个不同的计时器来响应不同的函数 用SetTimer() API。 其有三种用法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 调用UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );函数启动两个不同的定时器,指定这两个定时器的nIDEvent为不同的。在OnTimer( UINT nIDEvent )函数里用nIDEvent来区分这两个定时器。 安装定时器SetTimer(1, 1000, NULL);SetTimer(2, 3000, NULL);响应函数OnTimer(ID){ switch(ID) { case 1: ....... ....... break; case 2: ....... ....... break; default:....... ........ }}明白吗? 一个OnTimer(UINT nIDEvent) 可以响应多个计时器:SetTimer(NULL,计时器1, 300, NULL); SetTimer(NULL,计时器2, 300, NULL); 1.CYourWnd::Start(){... SetTimer( ID_EVENT1, 100, NULL ); SetTimer( ID_EVENT2, 300, NULL );}CYourWnd::OnTimer( UINT nIDEvent ){ if (nIDEvent == ID_EVENT1) DoFun1(); if (nIDEvent == ID_EVENT2) DoFun2();}法2:class CYourWnd :public ...{...static void DoFun1CB(HWND hWnd, UINT u1, UINT u2, DWORD dw) ;static void DoFun2CB(HWND hWnd, UINT u1, UINT u2, DWORD dw) ;}CYourWnd::Start(){... SetTimer( ID_EVENT1, 100, DoFun1CB); SetTimer( ID_EVENT2, 300, DoFun2CB);}void CYourWnd::DoFun1CB(HWND hWnd, UINT u1, UINT u2, DWORD dw) {...}void CYourWnd::DoFun2CB(HWND hWnd, UINT u1, UINT u2, DWORD dw) {...} CMFCStatusBar 不显示菜单提示 关于checksum校验和的问题 请精通GDI的朋友指教: 透明位图的问题 参数是BSTR* 类型,如何向其中赋CString的值 if/else与switch/case哪个效率高? 请问大侠们如何在VC++中引入C#中的包的用法,详情请进入 为什么不能响应双击消息了? 函数调用问题 如何才能正确地获得窗口句柄 如何在程序中,让一个控件显示,不显示 button 怎么响应WM_LBUTTONDOWN和WM_LBUTTONUP消息? 文件操作
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );函数启动两个不同的定时器,指定这两个定时器的nIDEvent为不同的。
在OnTimer( UINT nIDEvent )函数里用nIDEvent来区分这两个定时器。
SetTimer(1, 1000, NULL);
SetTimer(2, 3000, NULL);响应函数
OnTimer(ID)
{
switch(ID)
{
case 1: .......
.......
break;
case 2: .......
.......
break;
default:.......
........
}
}明白吗?
SetTimer(NULL,计时器1, 300, NULL);
SetTimer(NULL,计时器2, 300, NULL);
CYourWnd::Start()
{
...
SetTimer( ID_EVENT1, 100, NULL );
SetTimer( ID_EVENT2, 300, NULL );
}
CYourWnd::OnTimer( UINT nIDEvent )
{
if (nIDEvent == ID_EVENT1)
DoFun1();
if (nIDEvent == ID_EVENT2)
DoFun2();
}法2:
class CYourWnd :public ...
{
...
static void DoFun1CB(HWND hWnd, UINT u1, UINT u2, DWORD dw) ;
static void DoFun2CB(HWND hWnd, UINT u1, UINT u2, DWORD dw) ;
}CYourWnd::Start()
{
...
SetTimer( ID_EVENT1, 100, DoFun1CB);
SetTimer( ID_EVENT2, 300, DoFun2CB);
}void CYourWnd::DoFun1CB(HWND hWnd, UINT u1, UINT u2, DWORD dw)
{
...
}
void CYourWnd::DoFun2CB(HWND hWnd, UINT u1, UINT u2, DWORD dw)
{
...
}