WS_EX_LAYERED窗口相对于其父窗口不移动

时间:2012-05-11 12:50:27

标签: windows winapi win32gui

我创建了一个具有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属性????

1 个答案:

答案 0 :(得分:3)

在Windows8之前的系统上,您无法在子窗口上使用WS_EX_LAYEREDThe documentation says as much

  

Windows 8:顶级窗口和子窗口支持WS_EX_LAYERED样式。以前的Windows版本仅支持顶层窗口的WS_EX_LAYERED。