仕事で開発中のマテリアル システムにドラッグ アンド ドロップ機能を実装しようとしています。このシステムの一部には、ユーザーのハード ドライブに保存されたマテリアルのグループに分割されたリポジトリとして機能する「マテリアル ライブラリ」が含まれています。
UI の改良の一環として、「ハイライト」タイプの機能を実装したいと考えていました。ドラッグ アンド ドロップ時に、合法的にマテリアルをドロップできるウィンドウの色が非常に微妙に変化し、これが有効なアクションであるというユーザーへのフィードバックを改善します。
「基本マテリアル」(CStatic を使用した単なる CWnd) を含むバーを、ハイライトされていないときの中間の灰色の背景から、ホバーしたときの青色の背景に変更しています。すべてうまく機能し、OnDragEnter および OnDragExit メッセージは堅牢に見え、ハイライト ステータスを示すフラグを設定します。次に、OnCtrlColor でこれを行います。
if (!m_bHighlighted) {
pDC->FillSolidRect(0, 0, m_SizeX, kGroupHeaderHeight, kBackgroundColour);
}
else {
pDC->FillSolidRect(0, 0, m_SizeX, kGroupHeaderHeight, kHighlightedBackgroundColour);
}
ただし、スクリーンショットでわかるように、ドラッグされたオブジェクトの下でペイントが「グリッチ」し、元のグレーがそのまま残ります。それは本当に醜く見え、基本的に全体の効果を台無しにします.
これを回避する方法はありますか?