如何检测表单调整大小何时启动和停止?

Jer*_*dge 13 delphi resize delphi-xe2

我正在使用一个相当大的形式进行实时绘图.当用户调整表单大小时,我不希望在用户释放鼠标按钮之前对我的图形渲染应用大小更改,因此调整大小已完成.我如何检测到这一点,并且只有在用户完成表单大小调整后才调整渲染大小?因为现在,如果我使用OnResize表单的事件,它将不断重新渲染鼠标移动的每个像素的所有内容.

我已尝试鼠标向下/向上事件并跟踪此事件,但在调整窗体大小时不会调用这些事件.

TLa*_*ama 22

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

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

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

procedure WMEnterSizeMove(var Message: TMessage); message WM_ENTERSIZEMOVE;
procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE;
Run Code Online (Sandbox Code Playgroud)

  • +1.希望你不介意一点帮助.:) (6认同)