#include <windows.h> #include <math.h> #define WINMAXIMUM 100 HWND g_hwnds[WINMAXIMUM] = { 0 }; int g_winnum = 0; BOOL CALLBACK EnumWindowsProc( _In_ HWND hwnd, _In_ LPARAM lParam) { char classname[MAXBYTE] = { 0 }; GetClassNameA(hwnd, classname, MAXBYTE); if (strcmp("Notepad", classname) == 0) { g_hwnds[g_winnum] = hwnd; g_winnum++; } return TRUE; } int main() { EnumWindows(EnumWindowsProc, NULL); //完成代码如下://////////////////////////////////////////////////////// //每排3个窗口分4列排列 /*int i = 0; int line = 0; int num = 0; for (int line=0, y =0; line<4&&y<1080; line++,y+=230) { for (int x = 0,num=0 ; num<3 && x < 1920; num++,x += 230) { MoveWindow(g_hwnds[i],x+230, y, 230, 230, TRUE); i++; } }*/ //完成,代码如下:///////////////////////////////////////////////////////////////// //让所有窗口依次从左向右飞过 //for (int i=0; i<WINMAXIMUM;i++) //{ // for (int y=0; y<1080;y+=230) // { // for (int x=0;x<1920;x+=10 ) // { // MoveWindow(g_hwnds[i], x , y, 230, 230, TRUE); // Sleep(10); // } // // } // //} //代码完成,如下://///////////////////////////////////////////////////////////////////////////////////////// //让所有窗口依次挨个从左向右飞过 //for (int y = 0; y < 1080 - 230; y += 230) //{ // for (int x = 0; x < 1920; x += 5) // { // for (int i = 0; i < WINMAXIMUM; i++) // { // MoveWindow(g_hwnds[i], x - 80 * i, y, 230, 230, TRUE); // Sleep(5); // } // } //} //完成,代码如下:////////////////////////////////////////////////////////////////////////////////////////// //让窗口排列成 //* //** //*** //** //* //int i = 0; //for (int line=-2, y =0; line<=2; line++,y+=200) //{ // for (int x = 0,num=0 ; num<3-abs(line) ; num++,x += 210) // { // MoveWindow(g_hwnds[i],x, y, 200, 200, TRUE); // i++; // } //} //完成代码如下:////////////////////////////////////////////////////////// //让窗口排列成 // * // ** // *** // ** // * //int i = 0; //for (int line = -2, y = 0; line <= 2; line++, y += 200) //{ // for (int x = 1700, num = 0; num < 3 - abs(line); num++, x -= 210) // { // MoveWindow(g_hwnds[i], x, y, 200, 200, TRUE); // i++; // } //} ///////////////////////////////////////////////////////////// //让窗口分3行,每次每行飞入一个 /*for (int i = 0; i < WINMAXIMUM; i++) { for (int x = 0; x < 1920; x += 230) { for (int y = 0; y < 1080 - 230; y +=10) { MoveWindow(g_hwnds[i], x - 80 * i, y, 230, 230, TRUE); Sleep(5); } } } */ ////////反弹效果不符合要求,存疑。/////////////////////////////////////////////////////////////////////////////////// //模拟窗口反弹 for (int i=0;i<WINMAXIMUM;i++) { int y = 0; int num = 0; for (int x=0,n=1;x<1920-210;n++,x+=50) { if (n%2==0) { for (int y = num; y <870; y += 10) { MoveWindow(g_hwnds[i], x, y + (870 - y) / (2 * n), 210, 210, TRUE); Sleep(5); } } else { for (int y =870; y >0; y -=10) { MoveWindow(g_hwnds[i], x, y + (870 - y) /(2*n), 210, 210, TRUE); Sleep(5); } //y=y+( 870 - y) / 2; } } } //将数组中奇数下标的窗口从下往上飞,偶数下标的窗口从上往下飞。每次都需要反弹效果 //1,遍历数组 //for (int i=0;i<WINMAXIMUM;i++) //{ // //2,判断下标奇偶 // if (i%2==1) // { // //3,奇数下标,向下飞 // for (int x =0;x<1920;x+=50) // { // // for (int y = 0; y <870; y += 20) // { // // //反弹效果? // // // MoveWindow(g_hwnds[i], x, y, 210, 210, TRUE); // Sleep(5); // } // } // // } // else // { // //4,偶数下标,往上飞 // for (int x = 0; x < 1920; x += 50) // { // // for (int y = 870; y>0; y -= 20) // { // // //反弹效果? // // MoveWindow(g_hwnds[i], x, y, 210, 210, TRUE); // Sleep(5); // } // } // } //} return 0; }
最后两题做得不符合要求。
时间: 2024-10-11 22:06:12