2012-04-09 8 views
1

私はそれぞれ異なる技術のGUIを持つ複数のアプリケーションを持っています。X11レイヤーマネージャ

私はこれを行う必要がある -

1. Create n layers, one for each application, onto which applications draw. 
2. Have a layer manager which can perform operations on each of these layers 
    (like re sizing, changing opacity etc.) and then combine them to form a 
    single layer. 

誰かが、私はこれを進めるべきかのようなアイデアをお願いできますか? これに役立つAPIは何ですか?私は実際に私がgoogleで何を検索すべきかを理解することはできません。

実装言語:C++

プラットフォーム:Linuxのも

私は、これらの要件は、プラットフォームに依存しない方法で実装することができるかどうかを知りたいですか?

答えて

1

私はあなたの質問を正しく理解していれば、簡単なウィンドウマネージャのようなものが必要です。

そうなら、xlibの使用を避けて、QX11EmbedContainerを使用してください。ウィンドウを埋め込み、特定のコンテナを表示/非表示するだけでレイヤーを作成するのはかなり簡単ですか?

これはプラットフォームに依存しないソリューションでなければなりません(異なるハードウェアで動作するはずですが、Linux以外のOSでは動作しません)。


すでにQX11EmbedContainerを使用して、そして、あなたはXReparentWindowDisplay機能を使用する必要があります(C++で)のみのXlibを使用するための要求を持っているので。これは、xlib標準の9.1章でカバーされています(それはhereです)。それはそれを使用する方法をかなり簡単にする必要があります。

+0

私は今までQX11EmbedContainerを使用していました。しかし、C + +でそれを行うためのいくつかの特定の要件があります。 XLibを使って実装するのはかなり難しいでしょうか? –

+0

@AmitTomar Ok、編集された回答。 XReparentWindowDisplay関数(xlib関数)を使用する必要があります –

+0

ありがとうございます。それは役に立ちました。ただ一つの最後の疑問。コンテナのサイズを変更することができます(X11またはQXEmbed)。しかし、アプリケーションのウィンドウ自体をサイズ変更することは可能ですか?(アプリケーション側からではなく、ウィンドウマネージャ側から) –