私は完全に透明な境界線のないウィンドウを、その上に完全に表示されたテキストで作ろうとしています。テキストの背景は透過的ではなく、実際のフォント面である必要があります。問題は、SetWindowRgnを実行していないときにTextOutが表示されることがわかります。私は私が間違っているの何見当がつかない:(透明なwin32ウィンドウとテキスト
このように、これを解決BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance;
DWORD Flags1 = WS_EX_COMPOSITED | WS_EX_LAYERED | WS_EX_NOACTIVATE | WS_EX_TOPMOST | WS_EX_TRANSPARENT;
DWORD Flags2 = WS_POPUP;
hWnd = CreateWindowEx(Flags1, szWindowClass, szTitle, Flags2, 0, 0, 1920, 1200, 0, 0, hInstance, 0);
if(!hWnd)return FALSE;
HRGN GGG = CreateRectRgn(0, 0, 0, 0);
SetWindowRgn(hWnd, GGG, false);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
DeleteObject(GGG);
return TRUE;
}
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
SetBkMode(hdc, TRANSPARENT);
TextOut(hdc, 50, 50, L"MY TEXT", lstrlen(L"MY TEXT"));
EndPaint(hWnd, &ps);
CreateRectRgnにまともな値を渡します( ) –
私は0,0,1920,1200で試しましたが、今は何も見えません。画面全体が見えないようにしています:( – Kachinsky
@ user1040769 Githubにこのソリューションを追加してください。ウィンドウが透明な場所)と子ウィンドウ(ボタンなど)を1つずつ押してください。これはとても素晴らしいので、これをどのように達成したかを私たちが知ることができます。リンクを乗せてください。どうもありがとうございます! – bluejamesbond