Einzelnen Beitrag anzeigen

Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Auflösung 800x480 auf zweitem Monitor einstellen

  Alt 28. Nov 2008, 23:50
Danke erstmal für eure Antworten.
Leider bekomme ich es nicht gebacken:
Egal ob ich ChangeDisplaySettings oder ChangeDisplaySettingsEx nehme, ich erhalte immer: DISP_CHANGE_BADMODE (The graphics mode is not supported.)
Folgender Code:
Delphi-Quellcode:
function SetResolution(DeviceName: PChar; Width, Height: Word; Freq :Cardinal): String;
var lpDevMode: TDeviceMode;
begin
  if EnumDisplaySettings(DeviceName, 0, lpDevMode) then
  begin
    lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY;
    lpDevMode.dmPelsWidth := Width;
    lpDevMode.dmPelsHeight := Height;
    lpDevMode.dmDisplayFrequency := Freq;
    case ChangeDisplaySettingsEx(DeviceName, lpDevMode, 0, CDS_UPDATEREGISTRY, nil) of
      DISP_CHANGE_SUCCESSFUL: Result := 'DISP_CHANGE_SUCCESSFUL';
      DISP_CHANGE_BADFLAGS: Result := 'DISP_CHANGE_BADFLAGS';
      DISP_CHANGE_BADMODE: Result := 'DISP_CHANGE_BADMODE';
      DISP_CHANGE_BADPARAM: Result := 'DISP_CHANGE_BADPARAM';
      DISP_CHANGE_FAILED: Result := 'DISP_CHANGE_FAILED';
      DISP_CHANGE_NOTUPDATED: Result := 'DISP_CHANGE_NOTUPDATED';
      DISP_CHANGE_RESTART: Result := 'DISP_CHANGE_RESTART';
    end;
  end;
end;

procedure TForm5.FormCreate(Sender: TObject);
var Device: TDisplayDevice;
begin
  Device.cb := SizeOf(Device);
  if EnumDisplayDevices(nil, 1, Device, 1) then
    Caption := SetResolution(Device.DeviceName, 800, 480, 60);
  // Caption := Device.DeviceName;
end;
Komischerweise, als ich es mit 800x600 probiert habe, wurde die Auflösung des ersten Monitors geändert. Hier macht es auch durchaus Sinn, wenn 800x480 "not supported" ist, da dieser über DVI angeschlossen ist und hier übertragen wird, welche Auflösungen gültig sind. Bei dem Zweitmonitor (über VGA) aber anscheinend nicht, hier müsste 800x480 ja gehen, aber komischerweise ändert dieser Code ja die Auflösung des ersten Monitors...
Wenn ich Device.DeviceName ausgebe, erhalte ich aber: \\.\DISPLAY2
Also müsste es doch der zweite sein?

Zitat von Florian H:
Zitat von Martin K:
da gibts so nen ATI-Catalyst Center, aber den will ich ned installieren, weil der dann auch neue Treiber mit drauf macht und damit hatte ich nur Probleme (Bild friert kurzzeitig ein, etc.) Mit den Windows-Standardtreibern funzt es am besten!
Scheinbar nicht?
Die Standardtreiber sind da wirklich etwas unflexibel, mit den Treibern der Grafikkarten-Hersteller hat man aber deutlich mehr Möglichkeiten.
Wenn da das Bild einfriert, hast du wohl entweder eine sehr neue oder sehr alte Grafikkarte? Ansonsten werden solche Bugs doch eigentlich schnell behoben, hast du die aktuellste (ggf Beta-) Version schon ausprobiert?
Also ich will da nix mehr mit dem ATI-Zeugs rumprobieren (schlechte Erfahrungen). Meine Karte ist wohl eher etwas älter (ATI Radeon X300 SE) und ich hatte immer das Gefühl, dass es bei jeder neuen Treiberversion von ATI immer schlimmer wurde (mit dem Einfrieren), kann aber auch sein dass das Einfrieren erst kam, seit dem ich den (ersten) Monitor mit einer relativ hohen Auflösung (1920x1200) hatte. Jedenfalls gabs bei den Windows-Standardtreibern nie Probleme diesbezüglich, alles läuft flüssig (okay, das mit der Auflösung geht halt ned )
War nicht nur das Einfrieren sondern noch andere Sachen, z.B. Scrollen bei großen Dokumenten war viel langsamer, etc...


Zitat von scrat1979:
Ich benutze das Tool UltraMon und bin super zufrieden damit. Müsste GraKa-unabhängig sein!!!
Hier kann ich immerhin auch andere Auflösungen einstellen, aber 800x480 ist nicht dabei...
640x480 oder 720x480 geht, wobei meiner 720x480 nicht unterstützt.
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat