delphi - 如何检测表单大小调整何时开始和停止?

标签 delphi resize delphi-xe2

我正在一个相当大的表单上进行一些实时绘图。当用户调整表单大小时,我不想将大小更改应用于图形渲染,直到用户释放鼠标按钮,从而完成调整大小。如何检测到这一点,并仅在用户完成调整表单大小后才调整渲染大小?因为现在,如果我使用表单的 OnResize 事件,它将不断地重新渲染鼠标移动的每个像素的所有内容。

我尝试过鼠标向下/向上事件并跟踪它,但在调整表单大小时不会调用这些事件。

最佳答案

要检测移动或调整大小是否已开始,请捕获 WM_ENTERSIZEMOVE信息。一旦用户单击窗口的标题栏或大小调整边框(使窗口进入移动或大小调整循环),它就会被发送到窗口。

要检测移动或调整大小是否已完成,请捕获 WM_EXITSIZEMOVE信息。一旦用户释放窗口的标题栏或大小调整边框(使窗口退出移动或大小调整循环),它就会被发送到窗口。

您可以通过在表单级别声明(和实现)它们来捕获它们中的任何一个:

procedure WMEnterSizeMove(var Message: TMessage); message WM_ENTERSIZEMOVE;
procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE;

关于delphi - 如何检测表单大小调整何时开始和停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645339/

相关文章:

delphi - 在 Delphi 2009 中读取文本文件

javascript - 当屏幕尺寸超过 1024px 时运行 jQuery 代码

mysql - 无法将 Delphi 应用程序连接到 mySQL 数据库

delphi - 使用计时器将Delphi表单最小化到系统托盘

c++ - 我应该如何更改此声明?

delphi - 为什么我不能声明通用形式

delphi - 如何调整GLCamera显示整个GLScene

Delphi类参数

delphi - 渲染图元文件时,文本太大

c++ - vector 调整大小奇怪的行为