|
分類:[C/C++]
お世話になります。
VC++9.0を使用しています。
Win32APIのGDIを使った描画処理に関連して、(まれに)発生している問題について 原因を探しているのですが、問題箇所の特定ができず困っております。
推定される原因、あるいは解決方法など、参考になる情報をご存知の方がいらっしゃいましたら、お助けいただけないでしょうか?
[現象] Win32APIのGDI関数による描画を行っているのですが、 突発的に、一部のダイアログ上のウィンドウについてのみ、 そのウィンドウの座標ではなく、デスクトップ上に描画されるという、問題が発生します。
見た目でいうと、複数のダイアログ上のコントロールが、 デスクトップの左上に重ねて表示された状態になります。 問題が発生するプログラムのメインウィンドウ上のメニューやツールバー、ドッキングウィンドウなどは、 正常な位置で描画されたままの状態でした。
異常が発生するきっかけとしては、 ・ダイアログのリサイズ ・アプリケーションの切り替え などの操作が行われたようですが、再現頻度が低く絞込みができていません。
また、問題のきっかけとなったダイアログを閉じて、 開きなおすと正常な表示に戻ります。
[環境] ・VS2008 VC++9.0 MFCのMDIアプリ + ActiveXコントロール
・OSは、WinXP、Win7で発生しました。
・使用しているGDI関数は ・DrawText ・DrawEdge ・FillRect ・MoveTo,LineTo などです。
・同じDLL内で、Theme APIを使った描画も使用しています。 ・DrawThemeText ・DrawThemeEdge ・DrawThemeBackground
|