2012-02-27 12 views
1

WTLでは、CBitmapButtonはPNGのような透明レイヤーの画像をサポートしていません。 私はGDI +を使用してPNGを描画するコードをカスタマイズし、CPNGButtonという名前を付けます。 しかし、勝利XP上で物事は奇妙です。 ボタンが他のウィンドウでオーバーラップすると、ボタンはWM_PAINTを最初に受信し、次に親が誤った結果を引き起こします。WS_TABSTOPがウィンドウ描画順序に影響する原因は何ですか?

enter image description here --->enter image description here

私はリソースをチェックし、ボタンのテンプレートからWS_TABSTOP属性を削除するには、物事は親ウィンドウは、その後、最初のボタンをWM_PAINTを受けて、[OK]を行きます。 WS_TABSTOPがウィンドウ描画順序に影響する原因は何ですか?

答えて

2

これは、背景を描画しないと起こります。ウィンドウに「穴」が残ると、どのウィンドウのピクセルがあなたの背後にあるのかが分かります。そのようなウィンドウがない場合、デスクトップ。 WS_TABSTOPと何が関係しているかは別です。

WS_EX_TRANSPARENTスタイルフラグを使用します。これは、ボタンの親がクライアントウィンドウに描画され、背景ピクセルを提供したいということをWindowsに伝えます。

+0

この状況は、WS_TABSTOPを削除した後でも時々発生することがあります。 WS_EX_TRANSPARENTを追加するとうまくいきます! – toki

関連する問題