本来是想使用 GDI+ 制作一个透明窗口,然后使用 SetWindowDisplayAffinity 来实现反截屏的目的,但是遗憾的是针对 WS_EX_LAYERED 属性的窗口,SetWindowDisplayAffinity 的调用总是会失败,返回错误码 :8 。
但是写都写了,就记录下来备忘吧。
(代码参考自网络,结构上做了一些小修改,侵删)
#include <iostream>
#include <Windows.h>
#include <gdiplus.h>
#pragma comment(lib,"gdiplus.lib")
typedef BOOL(*UPDATELAYEREDWINDOWFUNCTION)(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD);
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
int main()
{
//
// 变量定义
//
ULONG_PTR gdiplusStartupToken;
Gdiplus::GdiplusStartupInput gdiInput;
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;