5

実行中の別のアプリケーションの上にオーバーレイ ウィンドウを作成しようとしています。ファイアフォックスとしましょう。Xcreatewindow を使用して実装しました

win = XCreateWindow( display, *firefoxwindow,
                   50, 300, 400, 400,
                   0,
                   visualinfo.depth,
                   InputOutput,
                   visualinfo.visual,
                   CWColormap|CWEventMask|CWBackPixmap|CWBorderPixel,
                   &attr
                   ) ;

XQueryTree() を使用して *firefoxwindow を検索しました

そして、このコード https://gist.github.com/903479に従いました

XRoot を親として使用すると、結果は透明なウィンドウになります。しかし、firefoxwindow や他のアプリケーション ウィンドウを親として使用しようとすると、おかしくなりました。

4

1 に答える 1

4

あなたの場合、ウィンドウピックスマップと背景ウィンドウを手動で合成する必要があります。ルートを親としてウィンドウを作成すると、合成ウィンドウ マネージャーによって透明度が処理されます。

于 2012-05-22T04:30:15.680 に答える