Windows の新規インストールで WS_EX_LAYERED フラグが機能しない理由を理解するのに多くの時間を費やしたので、この投稿を共有したいと思います (私のテストは Win7 で行われました。 Win8 OS)。
これは私のコードでした:
...
hParentWindow=hWnd;
HWND myWnd=CreateWindowEx(WS_EX_LAYERED|WS_EX_PALETTEWINDOW,_T("STATIC"),_T(""), WS_POPUP|SS_BITMAP,position.left,position.top, position.right, position.bottom,hWnd,NULL,hInst,NULL);
次に、透明なレイヤーを追加したかった:
CWnd::FromHandle(myWnd)->SetLayeredWindowAttributes(RGB(0,0,0), 255*0.6, LWA_ALPHA);
コードを実行しても、ウィンドウは表示されませんでした! これは子ウィンドウではなかった (WS_EX_LAYERED は子ウィンドウでは機能しない) ため、WS_EX_LAYERED フラグは機能しているはずです。
なんで?