防止整个屏幕更新

时间:2011-01-25 15:10:43

标签: windows delphi winapi

编辑1:实际上,我只是想避免因关闭Word文档并打开另一个文档而导致的闪烁。但现在看来这种方法并不可行。

问候,是否可以防止整个屏幕(不仅是桌面)更新?问题来自this one。我想要做的是,在我的Word插件中,当我关闭Word文档并打开另一个文档时锁定整个屏幕更新,并在我完成时重新启用更新。

一个想法是:

  1. 获取整个屏幕的图像(如何?);
  2. 显示最顶层的窗口,以显示在步骤1中捕获的屏幕图像,以覆盖整个屏幕;
  3. 完成我的工作并在完成后关闭最顶层的窗口。
  4. 有可能吗?或者你有其他更好的想法吗?谢谢!

2 个答案:

答案 0 :(得分:7)

别。

没有应用程序,插件或其他非常好的代码片段永远不会那么特别,即使是很短的时间 - 用户拥有的内容:他的用户界面。

The Old New ThingRaymond Chen)有一些非常好的帖子,从LockWindowUpdatelocking gadges in place和其他user-hostile features不等。

生活在多线程世界中,意味着您应该期望您的用户可以同时执行多项操作。

将某些东西锁定为“让它看起来很漂亮” - 即使是在非常短的时间内 - 也是完全禁止的。

您的请求只是迈向可怕的系统模式对话框的第一步“您确定要对计算机执行此操作吗?”使用按钮YesNo,其中Yes是默认按钮,在用户输入长篇故事的过程中,按空格键。

- 的Jeroen

答案 1 :(得分:0)

阻止屏幕更新:

SendMessage(GetDesktopWindow, WM_SETREDRAW, 0, 0);

重新启用屏幕更新:

SendMessage(GetDesktopWindow, WM_SETREDRAW, 1, 0);