【发布时间】:2010-12-05 18:20:43
【问题描述】:
我想阻止我的窗口被更新,直到我完成从服务器接收数据并呈现它。我可以挂钩 WM_PAINT 事件,还是调用一些 Win32API 方法来防止窗口被更新并在以后解冻它?
更多信息: 在用 C# 编写的 MMC 管理单元的上下文中,我们的应用程序会遇到烦人的闪烁和双重排序行为: 我们使用 MMC 的 listViews,但是由于我们订阅了排序事件。 MMC 使用它自己的魔法并对正在显示的页面进行排序(我们不能覆盖它),当我们收到来自服务器的回复时,我们再次更改 listView。 每行更改都是按顺序完成的,没有 beginUpdate 等(AFAIK)。
【问题讨论】:
-
很抱歉,您如何从 mmc 进行这项工作(挂钩到 WM_PAINT)?我在树视图上有同样的问题 - 删除子节点时严重闪烁 - 每个 IConsoleNameSpace->DeleteItem 调用 WM_PAINT + WM_ERASEBKGND ...
-
也许这个链接会有所帮助? msdn.microsoft.com/en-us/library/… - 我不必这样做,因为我们的问题主要出在列表视图上,我们用包含在 Winforms elementhost 中托管的 WPF 列表视图的 FormViews 完全替换了它们(~~是的,我们做到了!~~)。但我也遇到了这个树视图闪烁,可能有一天会尝试。
-
首先感谢。但在我们的例子中,它必须在 mmc 接口下定义......我尝试了 LockUpdateWindow,它工作,但不知何故它使其他窗口闪烁:)
标签: user-interface winapi mmc doublebuffered