Einzelnen Beitrag anzeigen

Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Multi Monitor Unterstützung - Was tun bei mehreren Monit

  Alt 23. Sep 2005, 08:26
Moin Leuselator,

nur teilweise richtig. Wenn ich auf einem Monitor Pivot-Mode einschalte, hab ich folgenden Desktop:
Code:
+----------+ +-----------+
|          | |           |
|   M1     | |    M2     |
|          | |           |
+----------+ |           |
             |           |
             +-----------+
Mach einfach mal einen Screenshot von so einer Konfiguration, und du wirst wissen was ich meine

Zum Theme: ich hatte das gleiche "Problem" bei einem Screensaver, der alle Monitore fuellen sollte. Ich habs dann so geloest:
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
var
   MinLeft, MinTop: Integer;
   TotalWidth, TotalHeight: Integer;
   i, j: Integer;
   PaintBoxStartPoint: TPoint;
begin
   Self.PaintBoxList := TPaintBoxList.Create(True);
   Self.BorderStyle := bsNone;
   Self.FormStyle := fsStayOnTop;
   Self.MonitorCount := Screen.MonitorCount;

   MinLeft := 0;
   MinTop := 0;
   TotalWidth := 0;
   TotalHeight := 0;
   for i := 0 to Self.MonitorCount-1 do
   begin
      MinLeft := Min(MinLeft, Screen.Monitors[i].Left);
      MinTop := Min(MinTop, Screen.Monitors[i].Top);
      TotalWidth := Max(TotalWidth, Screen.Monitors[i].Left + Screen.Monitors[i].Width);
      TotalHeight := Max(TotalHeight, Screen.Monitors[i].Top + Screen.Monitors[i].Height);
   end; //   for i := 0 to Self.MonitorCount-1 do
   Self.Top := MinTop;
   Self.Left := MinLeft;
   Self.Height := TotalHeight;
   Self.Width := TotalWidth;
   for i := 0 to Self.MonitorCount-1 do
   begin
      PaintBoxStartPoint := ScreenToClient(Point(Screen.Monitors[i].Left, Screen.Monitors[i].Top));
      with PaintBoxList[PaintBoxList.Add(TPaintBox.Create(Self))] do
      begin
         Left := PaintBoxStartPoint.X;
         Top := PaintBoxStartPoint.Y;
         Width := Screen.Monitors[i].Width;
         Height := Screen.Monitors[i].Height;
         Parent := Self;
         Tag := i;
         Visible := True;
         OnPaint := PaintBoxPaint;
         OnClick := FormClick;
      with PaintBoxList[PaintBoxList.Add(TPaintBox.Create(Self))] do
   end; //   for i := 0 to Self.MonitorCount-1 do
So, und was ist das? Tja...wenn ichs noch wuesste
Ne, im Ernst: Das Programm vergroessert sich auf den extremsten Desktop, und erstellt dann eine PaintBox fuer jeden Monitor, genau mit den entsprechenden Koordinaten. Ich weiss nicht inwiefern dir das nuetzlich ist, aber wer weiss

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat