gpt4 book ai didi

c++ - 如何修复 MFC 绘画故障?

转载 作者:行者123 更新时间:2023-11-28 08:34:31 25 4
gpt4 key购买 nike

我正在尝试为我工作中正在开发的 Material 系统实现一些拖放功能。该系统的一部分包括一个“ Material 库”,它充当存储库,将用户硬盘上保存的 Material 分成几组。

作为一些 UI 润色的一部分,我希望实现“突出显示”类型的功能。拖放时,您可以合法地将 Material 拖放到其上的窗口会非常微妙地改变颜色,以改善对用户的反馈,表明这是一个有效的操作。

我正在将带有“基本 Material ”(只是一个带有 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);
}

但是,正如您在屏幕截图中看到的那样,拖动对象下方的绘画出现“故障”,原始灰色留在原处。它看起来真的很丑,基本上破坏了整个效果。

有什么办法可以解决这个问题吗?

最佳答案

远程调试是调试视觉问题的天赐之物。设置起来很麻烦,但准备好用于远程调试的 VM 肯定会有所返回。

我喜欢在绘制处理以及框架绘制代码本身中设置大量断点。这使您可以有效地“定格”这幅画,而不会因为切换到 devenv 而使它变得乏味。通过这种方式,您可以了解谁按什么顺序绘画的真实情况,以及您有机会按需要调整填充的位置。

关于c++ - 如何修复 MFC 绘画故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com