lke*_*ler 4 delphi messages idle-processing
Application.ProcessMessages命令是众所周知的,我在长进程中使用它来确保我的程序不会占用计算机.
但我有一个相当快速的处理集,我在缓冲视图到文件.在缓冲过程期间,可能会发送一些系统消息(例如重绘或滚动条移动或其他事件).我希望防止这些被ProcessMessages处理,直到我的缓冲完成.
有没有办法:
阻止Application.ProcessMessages直到我的过程完成,或
捕获在我的过程中生成的所有消息,并且不会释放它们直到过程结束.
允许ProcessMessages
继续即使它发送您不想要的消息也不应被归类为有问题.通过一些代码重构,您可以将缓冲方法移动到单独的线程中并从那里开始.
如果您尝试将控件的"可视内容"复制到文件中,
LockWindowUpdate
Win32 API方法调用,它将关闭所有绘制消息到该控件WndProc
/ DefaultWndProc
方法,并为发送的每条消息返回"true"OnPaint
"," OnPaintBackground
"等),如果缓冲正在进行中,则不执行任何操作覆盖WndProc
或DefaultWndProc
简单地为每个消息返回true基本上"关闭",ProcessMessages
但这样做是不安全的,因为控件可能需要处理一个或多个消息才能正常运行.
关闭ProcessMessages
是不可能的(没有重写用于消息处理的VCL代码),因为它是VCL表单的消息循环的构建方式的一部分.
归档时间: |
|
查看次数: |
4105 次 |
最近记录: |