程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 讓窗體在執行了“顯示桌面”以後仍舊顯示在桌面上

讓窗體在執行了“顯示桌面”以後仍舊顯示在桌面上

編輯:Delphi

  昨天在DFW上看到一個問題,要求“使程序窗口置於最低層(在桌面上);點擊“顯示桌面”以後還是在桌面上”,琢磨了一下,實現了“讓窗體在執行了‘顯示桌面’以後仍舊顯示在桌面上”,代碼如下:

  unit Unit1;
  
  interface
  
  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
  
  type
    TForm1 = class(TForm)
    private
      { Private declarations }
      procedure WndProc(var Message: TMessage); override;  // 重載
    public
      { Public declarations }
    end;
  
  var
    Form1: TForm1;
  
  implementation
  
  {$R *.dfm}
  
  procedure TForm1.WndProc(var Message: TMessage);
  var
    WndPosFlag: Integer;
  begin
    if Message.Msg = WM_SHOWWINDOW then
    begin
      if Message.WParam = 0 then
      begin
        Exit;
      end;
    end;
    inherited;
  end;
  
  end.

  可是。。。。。。有個前提:窗體屬性 FormStyle = fsStayOnTop 這個不可省。。。所以不能呆在所有窗體最後

  spy++跟了半天,還是沒想明白為什麼FormStyle屬性為fxNormal的時候WM_SHOWWINDOW消息在程序裡就截不到。。。而斷點調試時能截到第一次,後面也再截不到了,神奇
  不管FormStyle為什麼程序明明都收到了WM_SHOWWINDOW消息的(而且消息值也都相同)

  汗ing.....


  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved