Delphi 任务栏在设置为“自动隐藏”时消失,我的窗口设置为“最大化”

Delphi 任务栏在设置为“自动隐藏”时消失,我的窗口设置为“最大化”,delphi,windows-7,Delphi,Windows 7,我将Windows任务栏设置为自动隐藏 当我将应用程序设置为最大化时,底部任务栏的小2像素对齐将消失,之后我无法访问任务栏 如果最小化应用程序,任务栏将重新出现 你知道为什么吗 我在Windows7下 我的应用程序是用delphixe编写的 这是为了制作一个类似于chrome/firefox的应用程序,上面有标签。 我给你一个关于消失任务栏问题的示例: DFM object Form3: TForm3 Left = 0 Top = 0 Caption = 'Form3' Clie

我将Windows任务栏设置为自动隐藏 当我将应用程序设置为最大化时,底部任务栏的小2像素对齐将消失,之后我无法访问任务栏 如果最小化应用程序,任务栏将重新出现

你知道为什么吗

我在Windows7下 我的应用程序是用delphixe编写的

这是为了制作一个类似于chrome/firefox的应用程序,上面有标签。 我给你一个关于消失任务栏问题的示例:

DFM

object Form3: TForm3
  Left = 0
  Top = 0
  Caption = 'Form3'
  ClientHeight = 320
  ClientWidth = 635
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Arial'
  Font.Style = []
  OldCreateOrder = False
  WindowState = wsMaximized
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 14
  object PageControl1: TPageControl
    AlignWithMargins = True
    Left = 0
    Top = 15
    Width = 635
    Height = 305
    Margins.Left = 0
    Margins.Top = 15
    Margins.Right = 0
    Margins.Bottom = 0
    ActivePage = TabSheet3
    Align = alClient
    TabOrder = 0
    object TabSheet1: TTabSheet
      Caption = 'TabSheet1'
    end
    object TabSheet2: TTabSheet
      Caption = 'TabSheet2'
    end
    object TabSheet3: TTabSheet
      Caption = 'TabSheet3'
    end
  end
end
代码

unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Dwmapi, ComCtrls, StdCtrls;

type
  TForm3 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    procedure FormCreate(Sender: TObject);
  private
    FWndTopFrameSize : Integer;
    FWndBorderFrameSize : Integer;
    procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
var
   r : TRect;
begin
   if DwmCompositionEnabled then begin
      SetRectEmpty(r);
      AdjustWindowRectEx(r, GetWindowLong(Handle, GWL_STYLE), False,
                         GetWindowLong(Handle, GWL_EXSTYLE));
      FWndTopFrameSize:=-r.Top;
      FWndBorderFrameSize:=r.Right;
      GlassFrame.Top:=FWndTopFrameSize+PageControl1.Margins.Top;
      GlassFrame.Enabled:=True;
      SetWindowPos(Handle, 0, Left, Top, Width, Height, SWP_FRAMECHANGED);
   end;
end;

procedure TForm3.WMNCCalcSize(var Message: TWMNCCalcSize);
begin
   inherited;
   if DwmCompositionEnabled then
      Inc(Message.CalcSize_Params.rgrc[0].Top, -FWndTopFrameSize);
end;

end.

你在一个全新的项目中看到了同样的行为吗?在一个新项目中没有问题。我在应用程序中没有看到任何关于任务栏修改或未最大化功能的内容,请继续查看。您的项目中有任何
CreateParams
覆盖吗?没有CreateParams。这是一种缺失吗?这里面加了什么function@Nono-需要检查的内容可能会改变默认行为。任何WM_SYSCOMMAND处理程序或其他可能相关的消息?问题是,如果不能复制这个问题,就不容易有任何帮助。