-1

WS_EX_LAYERED 拡張スタイル セットを使用したレイヤード フォームがあります。CreateWindowEx(...) API 関数を使用して、子の「EDIT」コントロールを作成しました。コントロールはそこにありますが、ペイントされておらず、フォームには何も表示されません。

トップ ウィンドウで WS_EX_LAYERED スタイルを使用すると、WM_PAINT メッセージが送信されなくなり、どちらの子コントロールもそれを受信しないため、表示されません。

フォームの不透明度が 255 に設定されており、背景が UpdateLayeredWindow(...) API を使用して透明な画像でペイントされていることを考慮してください。

マウスを EDIT コントロールの上に置くと、テキスト カーソルが表示され、その中のテキストをコピーできます。

私が対処しなければならない問題は、ユーザーペイントを受け入れるようにコントロールを作成することだと思います。

フォームと同じ手法でコントロールをペイントしようとしました。そのために、フォームから互換性のある DC を作成しましたが、これが可能かどうかはわかりません。コントロールはまだペイントされていません。

そのコントロールの WM_PRINTCLIENT を送信すると機能しますか? その場合、DC は階層化された親フォームにする必要がありますか? 私もこれを試しましたが、うまくいきませんでした。

通常形: http://img580.imageshack.us/i/formy.png/

レイヤードフォーム: http://img6.imageshack.us/i/layeredform.png/

私の質問は、編集コントロールが alpha-blended-user-paint を受け入れるようにするにはどうすればよいですか? レイヤード フォームにアルファ ブレンド コントロールをペイントする方法を教えてください。

4

1 に答える 1

0

結局、私はそれを行う方法を見つけました、

私がしなければならなかったのは、各コントロールのビットマップ イメージを取得し、それをフォームの背景に描画することでした。そのため、フォームに UpdateLayeredWindow を適用すると、フォームのビットマップにすべてのコントロールが含まれていました。

これがベストプラクティスかどうかはまだわかりませんが

メソッドはうまく機能しますが、私はそれを完成させ、より多くの相互作用+アルファブレンドコントロールを追加する必要があります..一方、機能はそこにあります

ここにあります:http://img84.imageshack.us/img84/3172/73845647.png

于 2011-02-22T21:34:24.867 に答える