分层Windows的系统菜单?

Joh*_*ick 4 delphi winapi vcl layered-windows systemmenu

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

控制菜单

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

这是一个匆忙制作的演示,展示了这个问题.不过,它可以用任何带有bsNone bordertyle的形式进行复制.

http://ompldr.org/vODd5dw

Dav*_*nan 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;
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一下,它的正式名称是系统菜单. (2认同)