我创建了一个具有WS_EX_LAYERED扩展样式的窗口。 之后,我将此窗口的父级更改为SetParent。 但是当我在桌面上移动父窗口时,我的窗口没有改变它相对于其父窗口的位置。
int translevel = 50; /* 0 - 255 */
SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE)|WS_EX_LAYERED );
::SetLayeredWindowAttributes(m_hWnd,RGB(0,0,0),translevel, 0x02);
HWND hParent = ::FindWindow(TEXT("TSSHELLWND"), NULL);
::SetParent(m_hWnd, hParent);
注意: - TSSHELLWND是mstsc会话窗口。我想让我的窗口成为mstsc会话窗口的孩子。
它没有移动,因为我在子窗口上应用了LAYESRED属性????
答案 0 :(得分:3)
在Windows8之前的系统上,您无法在子窗口上使用WS_EX_LAYERED
。 The documentation says as much:
Windows 8:顶级窗口和子窗口支持WS_EX_LAYERED样式。以前的Windows版本仅支持顶层窗口的WS_EX_LAYERED。