Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#1

Problem mit Vista und Taskbar-Preview

  Alt 19. Jun 2007, 10:50
Hallo DPler,

ich habe da ein Problem. Es geht um Vista und die Taskbar-Preview.

Ich verwende eine AboutBox mit dem BorderStyle "bsNone". Wenn ich nun die Taskbar und/oder Flip3D Preview durchgehe, wird nur ein Teil meines MainForms in der Größe der AboutBox gezeigt.

Ach ja: Ich habe die "Korrekturen" für die Delphi Form Aktivierung richtig drin, wirklich Von beiden Seiten bei InstallationExcellence.

Die normale Preview klappt ja auch, aber sobal ein Modalform mit Borderstyle bsNone auf ist, wird der Ausschnitt kleiner.

Ich habe dann testhalber dem Modalform mal ein eigenen Taskbarbutton verpasst und dann ist es so, daß der Preview des Modals perfekt ist (wie sonst auch beim MainForm), aber das MainForm dann plötzlich im Preview nur einen Ausschnitt in der Größe der AboutBox zeigt.

Was kann man da machen?

Gruß winkel79

Hier die üblichen bekannten:

MainForm:
Delphi-Quellcode:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle and not WS_EX_TOOLWINDOW or
    WS_EX_APPWINDOW;
end;

procedure TForm1.WMSyscommand(var Message: TWmSysCommand);
begin
  case (Message.CmdType and $FFF0) of
    SC_MINIMIZE:
    begin
      ShowWindow(Handle, SW_MINIMIZE);
      Message.Result := 0;
    end;
    SC_RESTORE:
    begin
      ShowWindow(Handle, SW_RESTORE);
      Message.Result := 0;
    end;
  else
    inherited;
  end;
end;

procedure TForm1.WMActivate(var Message: TWMActivate);
begin
  if (Message.Active = WA_ACTIVE) and not IsWindowEnabled(Handle)
    and not (IsWindowEnabled(Application.Handle)) then
  begin
    SetActiveWindow(Application.Handle);
    Message.Result := 0;
  end else
    inherited;
end;

...

procedure TForm1.Create(Sender: TObject);
begin
  ...
  if not (csDesigning in ComponentState) then
  begin
    ShowWindow(Application.Handle, SW_HIDE);
    SetWindowLong(Application.Handle, GWL_EXSTYLE,
      GetWindowLong(Application.Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW
      or WS_EX_TOOLWINDOW);
    ShowWindow(Application.Handle, SW_SHOW);
  end;
  ...
end;
und halt ggf. im ModalForm die gleichen CreateParams, damit es auch einen Taskbar-Button bekommt.
Frederik
  Mit Zitat antworten Zitat