#ifndef DEBUG_DISABLE
#define DEBUG_ENTERED(M) MessageBox(NULL,\
M,\
"Tip",\
MB_OK);
#else
#define DEBUG_ENTERED(M)
#endif
BOOL ShockWindow(HWND hWindow,DWORD dwDelayTime/*ms*/,DWORD dwShockTimes,DWORD dwSpan,BOOL bStayTop);
[cpp]
BOOL ShockWindow(HWND hWindow,DWORD dwDelayTime,DWORD dwShockTimes,DWORD dwSpan,BOOL bStayTop)
{
//get the information of the window
RECT rect;
GetWindowRect(hWindow,&rect);
//valid?
if(!hWindow)
{
DEBUG_ENTERED("Can not find window!")
return FALSE;
}
else
{
ShowWindow(hWindow,SW_NORMAL);
DEBUG_ENTERED("ENTER PROCESSING")
//if window is minimize,without this statement ,will cause the window hide
GetWindowRect(hWindow,&rect);
//on top
SetWindowPos(hWindow,HWND_TOPMOST,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,SWP_NOSIZE|SWP_NOMOVE);
//start shock
for(int i=0;i<dwShockTimes;++i)
{
MoveWindow(hWindow,rect.left+dwSpan,rect.top,rect.right-rect.left,rect.bottom-rect.top,TRUE);
Sleep(dwDelayTime);
MoveWindow(hWindow,rect.left,rect.top-dwSpan,rect.right-rect.left,rect.bottom-rect.top,TRUE);
Sleep(dwDelayTime);
MoveWindow(hWindow,rect.left-dwSpan,rect.top,rect.right-rect.left,rect.bottom-rect.top,TRUE);
Sleep(dwDelayTime);
MoveWindow(hWindow,rect.left,rect.top+dwSpan,rect.right-rect.left,rect.bottom-rect.top,TRUE);
Sleep(dwDelayTime);
}
//back to original position www.2cto.com
MoveWindow(hWindow,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,TRUE);
//weather the window want to be on top PS:now it is on top
if(!bStayTop)
{
SetWindowPos(hWindow,HWND_NOTOPMOST,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,SWP_NOSIZE|SWP_NOMOVE);
}
DEBUG_ENTERED("ENTER ENDING")
return TRUE;
}
}