我们在Delphi 2009中遇到了分层窗口和系统菜单的问题。也就是说,我们的分层窗口(没有边框)没有系统菜单。当我说系统菜单时,我指的是单击应用程序图标时右键单击它的标题栏或(在Windows 7中添加了shift键)右键单击任务栏中的应用程序时获得的菜单:
当您尝试访问系统菜单时,例如通过右键单击此类分层窗口的任务栏图标,而不是分层窗口。为什么是这样?是否有某种风格要设置,或某种事件需要处理?
这是一个匆匆制作的演示,展示了这个问题。但是,它可以用任何带有bsNone bordertyle的形式进行复制。
答案 0 :(得分: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;