クレートされたときにフラグを立てる静的コントロールがありますSS_OWNERDRAW
。SS_NOTIFY
親ウィンドウにはWS_EX_COMPOSITED
フラグがあります。
Windows XP では、下の図 (右上の四角形) に示すように、正しく描画されません。
しかし、Windows 7 では、下の図に示すように正しく描画されます (右上の X 印):
XPでこの問題を解決するにはどうすればよいですか? さらに、この問題の原因は何ですか (XP の場合)?
クレートされたときにフラグを立てる静的コントロールがありますSS_OWNERDRAW
。SS_NOTIFY
親ウィンドウにはWS_EX_COMPOSITED
フラグがあります。
Windows XP では、下の図 (右上の四角形) に示すように、正しく描画されません。
しかし、Windows 7 では、下の図に示すように正しく描画されます (右上の X 印):
XPでこの問題を解決するにはどうすればよいですか? さらに、この問題の原因は何ですか (XP の場合)?
MSDN forは次のようにCreateWindowEx()
述べています。
WS_EX_COMPOSITED が設定されている場合、ウィンドウのすべての子孫は、ダブル バッファリングを使用して下から上への描画順になります。下から上への描画順序では、子孫ウィンドウに半透明 (アルファ) および透明度 (カラーキー) 効果を持たせることができますが、これは、子孫ウィンドウにも WS_EX_TRANSPARENT ビットが設定されている場合に限られます。ダブルバッファリングにより、ウィンドウとその子孫をちらつきなくペイントできます。
つまり、子STATIC
コントロールがWS_EX_TRANSPARENT
設定されている必要があります。