首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

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

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);} 

热点排行