如何在Delphi中检测屏幕分辨率的更改?

11

问题很简单。如何在Delphi中检测屏幕分辨率的变化?


1
可能是重复的问题:如何识别显示器数量、位置或分辨率发生变化? - David Heffernan
@David - 那个现在被标记为重复了(不知道如果它们递归会发生什么..)。 - Sertac Akyuz
1
@David,Sertac:另一个已经关闭了,所以这个不应该被关闭。此外,我认为旧的关闭而不是这个是好的,因为这个有一个更好的答案。 - Andreas Rejbrand
2
作为另一个问题的 OP,我必须说这个问题确实有一个更好的答案,而且是同一个人写的。 - Jerry Dodge
1
重复项非常有用,可以通过任何搜索字符串找到答案。 - Dmitry
显示剩余2条评论
1个回答

22

你只需要检测 WM_DISPLAYCHANGE 消息。

例如,

TForm1 = class(TForm)
private
protected
  procedure WMDisplayChange(var Message: TWMDisplayChange);
    message WM_DISPLAYCHANGE;
  { Private declarations }

public
  { Public declarations }
end;

...

procedure TForm1.WMDisplayChange(var Message: TWMDisplayChange);
begin
  ShowMessageFmt('The screen resolution has changed to %d×%d×%d.',
    [Message.Width, Message.Height, Message.BitsPerPixel]);
end;

示例截图


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接