【发布时间】:2008-09-16 16:41:09
【问题描述】:
我正在尝试为我正在开发的材质系统实现一些拖放功能。该系统的一部分包括一个“材料库”,它充当用户硬盘上保存的材料的存储库,分为多个组。
作为一些 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);
}
但是,正如您在屏幕截图中看到的那样,被拖动对象下方的绘画“出现故障”,原始灰色留在原地。它看起来真的很丑,基本上破坏了整个效果。
有什么办法可以解决这个问题吗?
【问题讨论】: