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