Çalışmamda geliştirilen bir malzeme sistemi için bazı sürükle ve bırak işlevlerini uygulamaya çalışıyorum. Bu sistemin bir parçası, kullanıcının sabit diskinde kayıtlı malzemelerin gruplara bölünmesiyle depo olarak görev yapan bir 'Malzeme Kütüphanesi' içerir. Bazı UI polonyalarının bir parçası olarak, bir "vurgu" türü özelliğini uygulamayı umuyordum. Sürükleyip bırakırken, bir malzemeyi yasal olarak bırakabileceğiniz pencereler, kullanıcının geçerli bir işlem olduğu şeklindeki geri bildirimi iyileştirmek için rengi çok ince bir şekilde değiştirecektir.MFC Boyama Glitch'i nasıl düzeltilir?
Çubuğu, üzerinde gezinirken mavi bir arka plana getirilmemiş bir orta gri arka plana sahip olan 'Temel Malzemeler' (Sadece bir CStatik CWnd ile) ile değiştiriyorum. Her şey iyi çalışıyor, OnDragEnter ve OnDragExit mesajları sağlam görünüyor ve vurgu durumunu belirten bir bayrak ayarlıyor. Sonra OnCtrlColor içinde bunu:
if (!m_bHighlighted) {
pDC->FillSolidRect(0, 0, m_SizeX, kGroupHeaderHeight, kBackgroundColour);
}
else {
pDC->FillSolidRect(0, 0, m_SizeX, kGroupHeaderHeight, kHighlightedBackgroundColour);
}
Ancak, ekran görüntüsünde görebileceğiniz gibi, yerinde orijinal gri bırakarak sürüklenen nesnenin altına boyama 'hataları',. Gerçekten çirkin görünüyor ve tüm etkiyi temelde bozuyor.
Bundan kurtulmanın bir yolu var mı?