0x0007 2023-06-15 10:13 采纳率: 0%
浏览 42

如何确保窗口始终置底在桌面上?

在 windows 系统中,如何确保窗口始终置底在桌面上?
需求细节:

  • 窗口始终显示在桌面上
  • 无法被最小化,即使用户按下WIN+D,或点击任务栏最右侧的【显示桌面】按钮,窗口依然显示在桌面上;
  • 窗口在桌面图标之上
  • 窗口激活后,不能遮挡除桌面之外的其他程序;
  • 即使桌面崩溃重启后,依然保持上述特性;
  • 当该程序启动多个此类窗口后,彼此之间的窗口Z轴顺序可以正常切换,但都要确保保持上述特性;

请使用 C++/QT/Delphi 代码演示,需符合所有细节条件,谢谢。

  • 写回答

3条回答 默认 最新

  • 流光歲月leyt 2023-06-15 10:17
    关注

    这是使用C++/QT实现窗口始终置底的代码演示:

    #include <QApplication>
    #include <QWidget>
    #include <QDesktopWidget>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        // 创建一个QWidget窗口
        QWidget widget;
        widget.setGeometry(QApplication::desktop()->screenGeometry());
    
        // 设置窗口始终置底
        widget.setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnBottomHint);
        widget.show();
    
        return a.exec();
    }
    
    

    在上面的代码中,我们创建了一个QWidget窗口,并使用setWindowFlags()函数将其设置为始终置底。Qt::WindowStaysOnBottomHint参数指示窗口始终置底。Qt::FramelessWindowHint参数用于隐藏窗口边框。Qt::Window参数用于指定窗口类型。

    在Delphi中,可以使用以下代码实现窗口始终置底:

    unit Unit1;
    
    interface
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
    
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure SetWindowBottom(Handle: HWND);
    begin
      SetWindowPos(Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      // 设置窗口始终置底
      SetWindowBottom(Handle);
    end;
    
    end.
    
    

    在窗口创建时调用SetWindowBottom()函数,将窗口设置为始终置底。SetWindowPos()函数用于设置窗口的位置和大小。HWND_BOTTOM参数指示窗口始终置底。SWP_NOMOVE和SWP_NOSIZE参数用于保持窗口位置和大小不变。SWP_NOACTIVATE参数用于防止窗口激活。

    评论

报告相同问题?

问题事件

  • 修改了问题 6月15日
  • 创建了问题 6月15日

悬赏问题

  • ¥30 silcavo仿真,30分钟,只需要代码
  • ¥15 FastReport 怎么实现打印后马上关闭打印预览窗口
  • ¥15 利用3支股票数据估计其均值和方差的95%置信区间。
  • ¥15 微信小程序运行一项功能时,弹出未知错误弹框,检查代码没有问题
  • ¥15 ATAC测序生成self-pseudo replicates之前是否要进行去线粒体reads
  • ¥15 python模糊字匹配函数问题
  • ¥20 谁刷目标页面的uv记录器上数据,数据只记录跳转的数值
  • ¥30 数据库软件的安装方法
  • ¥15 一道以太网数据传输题
  • ¥15 python 下载群辉文件