0

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 属性を適用したために動かないのですか????

4

1 に答える 1

3

WS_EX_LAYEREDWindows8より前のシステムの子ウィンドウでは使用できません。ドキュメントには同じように書かれています

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

于 2012-05-11T14:52:04.383 に答える