【问题标题】:System Menu for Layered Windows?分层窗口的系统菜单?
【发布时间】:2011-08-03 09:17:57
【问题描述】:

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

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

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

http://ompldr.org/vODd5dw

【问题讨论】:

    标签: delphi winapi vcl layered-windows systemmenu


    【解决方案1】:

    您需要重新添加 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;
    

    【讨论】:

    • 谢谢,这很有意义。
    • 顺便说一下,它的正式名称是系统菜单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多