我正在尝试为我正在开发的材料系统实现一些拖放功能。 该系统的一部分包括一个“材料库”,该材料库用作用户硬盘驱动器上已保存材料的存储库(分为几组)。
作为一些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);
}
但是,如您在屏幕快照中所见,绘画在拖动的对象下方出现了“毛刺”,而原来的灰色留在了适当的位置。 它看起来真的很丑,基本上破坏了整个效果。
有什么办法可以解决这个问题?