MessageBox倒计时问题
我在Time1里面用了倒计时MessageBox
HHOOK hook=NULL;
int MSGRET=0;
int timek=0;
HWND MSGHWND,TEXTHWND;
UINT TD;
String MessageBoxString="";
void CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent, DWORD dwTime )
{
if (timek==0)
{
timek=30;
SendMessageA(MSGHWND,WM_COMMAND,7,0); //计时结束后传回的值
}
else
{
timek--;
char title[100]={0};
sprintf(title,(MessageBoxString+"\n退出时间还剩: %d 秒").c_str(),timek);
SetWindowText(TEXTHWND,title);
}
}
LRESULT CALLBACK CBTProc(
int nCode, // hook code
WPARAM wParam, // depends on hook code
LPARAM lParam // depends on hook code
)
{
if (nCode==WH_CBT)
{
UnhookWindowsHookEx(hook);
timek=30;
MSGHWND=(HWND)wParam;
TEXTHWND=GetDlgItem(MSGHWND,65535);
TD=SetTimer(0,1,1000,(TIMERPROC)TimerProc);
}
return 0;
}
//----------------------------------------------------------
上面是倒计时实现回调函数
下面是time1的代码
//-----------------------------------------------------------
void __fastcall TGDFast::Timer1Timer(TObject *Sender)
{
Timer1->Enabled=false;
MessageBox(this->Handle,(MessageBoxString+"\n退出时间还剩: 30 秒").c_str(),"新增提示",MB_YESNO+MB_ICONWARNING+MB_DEFBUTTON2);
Timer1->Interval=10000;
Timer1->Enabled=true;
}
问题如下:第一次显示倒计时是正确的,但是第二次开始倒计时开始变得步长变成2,第三次步长是4,越来越快。请问如何解决,是不是没有killtime或者是没有初始化。请给出详细代码和解释,谢谢