2011-07-23 13 views
2

ダイアログのコントロールよりもSEMI透明なガラスレイヤーのようなものを作る必要があります。文脈は、私のアプリケーションが長いプロセスが終了するのを待つとき、他のすべてのコントロールを無効にする必要があり、アニメーションが待機アニメーションとしてガラスレイヤーに表示されるときです。ダイアログコントロールでPNGを描画する方法

クライアント領域のサイズの半透明のPNG画像を他のすべてのコントロールと重ねて描画します。私はOnPaint()で描画を行いますが、イメージはダイアログの背景として描画されます。

私の質問はどのように私はpng画像のオーバーラップダイアログのコントロールを描画することができますか?

のLR

+1

ダイアログボックスやその他のコントロールの上に直接描画しないでください。 STATICコントロールをダイアログに追加し、代わりにその上に描画します。 –

+0

お返事ありがとうございます。つまり、静的なものを他のすべてのコントロールと重ねて配置し、静的にpngイメージを描画します。そうすることで、他のコントロールを見ることができる半透明の効果を得ることができますか? – jAckOdE

答えて

2

あなたがWS_CLIPCHILDRENとWS_CLIPSIBLINGSスタイルをいじると試すことができますが、私はそれが動作するか分かりません。私はあなたが他のすべてのコントロール(zオーダースタックの一番上)の上にカスタムコントロールを描画し、その上にビットマップを描画する必要があると思います(これは私が取るアプローチです - ダイアログは常にコントロールするので、ダイアログを描くあなたのアプローチは、そのままシステムと戦うことです)。

基本的に、他のすべてのコントロールをカバーするカスタムコントロールを描画しますが、透明に描画する必要はありません。 win2kより古いオペレーティング・システムをサポートする必要がないかぎり、WS_EX_TRANSPARENTおよび/またはWS_EX_LAYEREDウィンドウ・スタイルおよびSetLayeredWindowAttributes()メソッドを使用できます。

+0

私はそれがどのように動作するかを見るためにソリューションを試します、あなたの助けにたくさん感謝します。 – jAckOdE

関連する問題