效果:屏幕快速黑白闪烁,类似显示器故障。
#include <Windows.h>
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
//获取 整个屏幕的设备上下文(Device Context),nullptr 表示桌面窗口,即:对整个屏幕进行绘图。
HDC hdc = GetDC(nullptr);
//获取屏幕的分辨率(宽度和高度),为绘图提供尺寸依据。
int width = GetSystemMetrics(SM_CXSCREEN);
int height = GetSystemMetrics(SM_CYSCREEN);
for (int i = 0; i < 50; i++) { // 闪烁50次
//使用 PatBlt 函数把整个屏幕填充为黑色,并暂停 50 毫秒;
PatBlt(hdc, 0, 0, width, height, BLACKNESS); // 全黑
Sleep(50);
//接着将整个屏幕填充为白色
PatBlt(hdc, 0, 0, width, height, WHITENESS); // 全白
Sleep(50);
}
//释放前面用 GetDC 获取的设备上下文,非常重要的清理操作。
ReleaseDC(nullptr, hdc);
SendMessage(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0, 0);
return 0;
}
|