我想和你分享这篇文章,因为我浪费了很多时间来理解为什么 WS_EX_LAYERED 标志在全新安装的 Windows 上不起作用(我的测试是在 Win7 上,我不知道它是否可以在Win8 操作系统)。
这是我的代码:
...
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 标志应该有效。
为什么?