运行后效果如GIF,整个屏幕图像犹如流水向下滑动,CTRL+ALT+DELTE调出任务管理器后程序终止,或等待一段时间自动结束
![da403804fb9b265b8e234092950c4046.gif](https://img-blog.csdnimg.cn/img_convert/da403804fb9b265b8e234092950c4046.gif)
在VS中新建空工程
![acfd42b06f066582d56f5ce875e31d35.png](https://img-blog.csdnimg.cn/img_convert/acfd42b06f066582d56f5ce875e31d35.png)
向工程中添加CPP文件
![0dc25823273237408e0746a4825c7c1d.png](https://img-blog.csdnimg.cn/img_convert/0dc25823273237408e0746a4825c7c1d.png)
输入CPP文件名称
![690f434f6607ab9ffdd73c18669ac5ff.png](https://img-blog.csdnimg.cn/img_convert/690f434f6607ab9ffdd73c18669ac5ff.png)
将代码拷贝到CPP文件中
#include
#include
int main()
{
//获取整个屏幕的分辨率
RECT ScrRect;
GetWindowRect(GetDesktopWindow(), &ScrRect);
//获取设备
HDC myDC = GetDC((HWND)0);
for (long i = 0; i < 20000L; i++) #可以更改循环次数,控制特效时间
{
int width = rand() % 3;
int height = rand() % 3;
int x = (rand() % ScrRect.right) / 2 - width;
int y = rand() % ScrRect.bottom - height;
BitBlt(myDC, x, y, x + width, y + height, myDC, x + rand() % 3 - 1, y - rand() % 2, SRCCOPY);
}
ReleaseDC((HWND)0, myDC);
InvalidateRect(0, NULL, TRUE);
return 0;
}
编译运行后,会出现DOS窗口,如果不想要,可以将
int main()
替换成
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
同时需要修改链接选项,让VS链接WinMain函数,而不是main函数,方法如下:
选中项目,右键 > 选择属性 > 选择链接器 > 系统,将子系统修改为“控制台 (/SUBSYSTEM:CONSOLE)”
![368fc750c47a86e7962c1d9823214aa3.png](https://img-blog.csdnimg.cn/img_convert/368fc750c47a86e7962c1d9823214aa3.png)
编译运行,特效呈现。是不是很简单啊!