不管是因为要偷懒还是确实有这个需求,有时候我会遇到这样的需求,程序执行到某处的时候 我要停一秒再继续,但还不能让界面卡主。显然用系统自带的sleep函数 会导致主界面卡死。 那么怎么办呢? 我想有经验的程序猿 一定可以说出至少100种解决办法(稍微有点夸张)。不过我只会一种(因为会一种就行了)!!!!
那就是调用WaitEx函数,这个函数不是api哦 下面我把代码贴上
typedef struct _WAITDATA1
{
_WAITDATA1()
{
bExitFlag = FALSE;
dwTime = 0;
}
BOOL bExitFlag;
DWORD dwTime;
} WAITDATA1, *LPWAITDATA1;
UINT ThreadWait( LPVOID pParam )
{
LPWAITDATA1 data = (LPWAITDATA1)(pParam);
Sleep( data->dwTime );
data->bExitFlag = TRUE;
return 0;
}
void WaitEx( int iMillSec )
{
WAITDATA1 data;
data.dwTime = iMillSec;
AfxBeginThread( ThreadWait, &data );
MSG msg;
ZeroMemory( &msg, sizeof(msg) );
while( !data.bExitFlag )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
}
前边的乱七八糟的 都是为WaitEx服务的 不用管
完