【问题标题】:Show the window shadow when using VCL styles使用 VCL 样式时显示窗口阴影
【发布时间】:2013-08-19 23:12:21
【问题描述】:

在使用 VCL 样式时,是否可以按照正常的 Windows 7 窗体显示窗口阴影?

我知道样式中的位图和设置替换了表单边框,但阴影不是某种 alpha 混合/aero 的东西,在样式影响的区域之外吗?

将 CS_DROPSHADOW 添加到 WindowClass.Style 似乎没有效果。

【问题讨论】:

  • 使用 CS_DROPSHADOW 对我有用,你能显示你正在使用的代码吗?

标签: delphi delphi-xe2 vcl-styles


【解决方案1】:

使用 CS_DROPSHADOW 样式效果很好

type
  TMyForm = class(TForm)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

procedure TMyForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  with Params do
    WindowClass.Style := WindowClass.Style or CS_DROPSHADOW;
end;

【讨论】:

  • 对 CS_DROPSHADOW delphi 的网络搜索显示很多人都遇到了这个问题,而且它与 VCL 样式无关。在我看来,这里有一个问题,尽管很难重现。另外:Windows.pas 中没有定义 CS_DROPSHADOW 吗?
  • 有区别。 CS_DROPSHADOW 工作正常,好的。但是,当我在图片中的表单附近放置一个非样式化、非投影的表单(即空白表单)时,我发现它的阴影更加分散。我不知道,但问题可能与此有关。
  • 如果你说的是由 DWM 绘制的阴影,这是无法显示的,因为表单样式钩子使用了SetWindowRgn 函数,它不能很好地与 dwm 配合并禁用阴影效果效果。
  • 有没有人为此找到不同的解决方案?这对我们也不起作用。
猜你喜欢
  • 2019-07-21
  • 1970-01-01
  • 2011-05-13
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 2012-11-02
  • 2013-06-10
相关资源
最近更新 更多