读书人

C++如何使桌面上的其他窗口抖动

发布时间: 2012-06-04 14:48:03 作者: rapoo

C++怎么使桌面上的其他窗口抖动
在窗体A上创建个按钮 点击窗体A上的按钮使窗体B抖动 怎么做 各位有会的请指点 谢谢

[解决办法]

C/C++ code
void StartShake(){    srand((unsigned)time(NULL));    int sysX,sysY;    sysX=GetSystemMetrics(SM_CXSCREEN);//获得屏幕宽度    sysY=GetSystemMetrics(SM_CYSCREEN);//获得屏幕高度//    while(TRUE)//    {        HWND hWnd=::GetDesktopWindow();//获得桌面句柄        for(hWnd=::GetWindow(hWnd,GW_CHILD);hWnd;hWnd=::GetWindow(hWnd,GW_HWNDNEXT))        {                        RECT rect;                        long style=::GetWindowLong(hWnd,GWL_STYLE);//获得窗口类型            if(style&WS_VISIBLE)//窗口可视            {                            ::GetWindowRect(hWnd,&rect);//获得窗口矩形坐标                int posX,posY,cX,cY;                bool flag=!(rand()%2);                                cX=rect.right-rect.left;                cY=rect.bottom-rect.top;                //生成新窗口坐标                if(flag)                {                    posX=rect.left+rand()%10*5;                    posY=rect.top+rand()%10*5;                }                                else                {                    posX=rect.left-rand()%10*5;                    posY=rect.top-rand()%10*5;                }                                //边境判断                if(posX<0)    posX=0;                if(posY<0)    posY=0;                if(posX+cX>sysX)                    posX=sysX-cX;                if(posY+cY>sysY)                    posY=sysY-cY;                //设置窗口位置                ::SetWindowPos(hWnd,HWND_NOTOPMOST,posX,posY,rect.right-rect.left,                    rect.bottom-rect.top,SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOACTIVATE );            }        }//    }}void CShakeWindowsDlg::OnTimer(UINT nIDEvent) {    // TODO: Add your message handler code here and/or call default    if ( SetShake )        StartShake();    CDialog::OnTimer(nIDEvent);} 

读书人网 >C++

热点推荐