4

Delphi 2009 中的分层窗口和系统菜单存在问题。也就是说,我们的分层窗口(没有边框)没有系统菜单。当我说系统菜单时,我指的是单击应用程序图标时获得的菜单,右键单击其标题栏或(在 Windows 7 中,添加 shift 键)右键单击任务栏中的应用程序:

控制菜单

当您尝试访问系统菜单时,例如通过右键单击此类分层窗口的任务栏图标,分层窗口会升起。为什么是这样?是否有某种样式要设置,或者某种事件要处理?

这是一个匆忙制作的演示,展示了这个问题。不过,它确实可以用任何带有 bsNone 边框样式的形式复制。

http://ompldr.org/vODd5dw

4

1 回答 1

13

您需要重新添加使用边框样式WS_SYSMENU删除的样式。bsNone

type
  TLayeredForm = class(TForm)
    procedure FormCreate(Sender: TObject);
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

...

procedure TLayeredForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or WS_SYSMENU;
end;
于 2011-04-11T21:07:01.717 回答