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

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

在 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日

悬赏问题

  • ¥15 Java与Hbase相关问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框