我将使用Delphi 2010来构建一个运行在Windows XP/Vista和Windows 7上的Win32 GUI应用程序。
基本上,Application.MainForm是只读属性,一旦通过Application.CreateForm创建了第一个窗体,在运行时就无法更改:
基本上,Application.MainForm是只读属性,一旦通过Application.CreateForm创建了第一个窗体,在运行时就无法更改:
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
以上示例将使Form1成为应用程序的主窗体。它将显示在Windows 7任务栏的缩略图预览中。
在运行时设置Application.MainFormOnTaskBar为true,允许我们享受Windows aero主题功能。
我需要在运行时切换应用程序的主窗体。例如,将Form2设置为主窗体。我使用以下代码使其工作:
procedure SetAsMainForm(aForm:TForm);
var
P:Pointer;
begin
Application.MainFormOnTaskBar := False;
try
P := @Application.Mainform;
Pointer(P^) := aForm;
aForm.Show;
finally
Application.MainFormOnTaskBar := True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetAsMainForm(Form2);
end;
点击Button1按钮会将Form2设置为主窗体,并更新Windows任务栏缩略图预览。但是,在切换过程中,任务栏可能会闪烁。
我的问题是:
- 有没有办法消除这种闪烁?
- 在运行时设置Application.MainformOnTaskBar := False并再次设置为True是否安全?