当我将我的应用程序设置为最大化时,我将 Windows 任务栏设置为自动隐藏,底部任务栏的小 2 像素线消失了,如果我最小化我的应用程序,任务栏重新出现后,我无法访问任务栏。
你知道为什么吗 ?
我在 Windows 7 下我的应用程序是在 Delphi XE 中编程的
它是在顶部制作一个带有标签的 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.