2012-05-11 12 views
0

WS_EX_LAYERED拡張スタイルのウィンドウを作成しました。 その後、このウィンドウの親をSetParentに変更しました。 しかし、親ウィンドウをデスクトップ上に移動すると、ウィンドウはその親に対してそのウィンドウの位置が変更されません。WS_EX_LAYEREDウィンドウが親ウィンドウに対して移動しない

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

Windows-8以前のシステムでは、子ウィンドウにWS_EX_LAYEREDを使用することはできません。 The documentation says as much

Windows 8:WS_EX_LAYEREDスタイルは、トップレベルウィンドウと子ウィンドウでサポートされています。以前のWindowsのバージョンでは、トップレベルのウィンドウに対してのみWS_EX_LAYEREDがサポートされています。

関連する問題