![]() |
ChangeResolution dreht Desktop???
das ist mal wirklich merkwürdig!
ich benutze diese ChangeResolution-Funktion hier:
Delphi-Quellcode:
Zuhause funktioniert die auch perfekt(Radeon9800), aber in der Schule an den Rechnern (ham irgendsoeinen integrierten Intel-Grafikspaß) ist der Bildschirm dann auf dem Kopf! und man muss ihn erst durch zweimaliges drücken einer bestimmte Tastenkombination (Bildschirm um 90° drehen) wieder richtig herum drehen...
function ChangeResolution(sizex, sizey, bpp: DWORD): Boolean;
var DeviceMode: TDeviceModeA; i: Integer; begin i := 0; Result := False; while EnumDisplaySettings(nil, i, DeviceMode) do begin with DeviceMode do if (dmPelsWidth = sizex) and (dmPelsHeight = SizeY) and (dmBitsPerPel = bpp) then begin // erst testen, bevor wir umschalten! case ChangeDisplaySettings(DeviceMode, CDS_TEST) of // es wird klappen! DISP_CHANGE_SUCCESSFUL: Result := True; DISP_CHANGE_RESTART: Showmessage('Neustart erforderlich'); DISP_CHANGE_BADFLAGS: Showmessage('Ungültige Bildschirmeinstellungen'); DISP_CHANGE_FAILED: Showmessage('Auflösung konnte nicht geändert werden'); DISP_CHANGE_BADMODE: Showmessage('Bildschirm unterstützt diese Auflösung nicht'); // Nur Windows NT DISP_CHANGE_NOTUPDATED: Showmessage('Registry konnte nicht aktualisiert werden'); else Result := True; end; if Result then //jetzt wird umgeschaltet ChangeDisplaySettings(DeviceMode, CDS_FULLSCREEN) end; Inc(i); end; end; Hat jemand ne Ahnung woran das liegt/wie ich das lösen könnte, dass die ChangeResolution funktion sowohl zuhause als auch auf den Schulrechnern läuft? |
Re: ChangeResolution dreht Desktop???
1.Gedanke (ohne auf Code zu schauen): vllt habt ihr ja in der Schule eine Sperre, die es verbietet, Systemeinstellungen zu verändert (wäre ganz sinnvoll :mrgreen:). Die Proc ChageResolution versucht jetzt die Auflösung zu ändern, aber nicht über die normalen Systemeinstellungen und schwupps... kommt es zu einem Fehler, der alles "verdreht" :mrgreen: (klischeehaft^^)
|
Re: ChangeResolution dreht Desktop???
neee wir dürfen ja die auflösung verändern^^
bzw. wenn ich das in Windows mache klappts...nur die Funktion will nich....bzw mit ihr gehts ja auch nur eben mussich dann erst den bildschirm wieder richtich rum drehen... |
Re: ChangeResolution dreht Desktop???
In DeviceMode steht am Anfang nur Unsinn, da es eine lokale Variable ist. EnumDisplaySettings setzt nicht alle Felder in DeviceMode, sodass danach immer noch zum Teil Unsinn in DeviceMode steht (z.B. vielleicht in dmDisplayOrientation bei XP, was Du dann ja unverändert zurückgibst). Als erstes würde ich zu Beginn DeviceMode ausnullen
Delphi-Quellcode:
und dann noch die Größe eintragen
ZeroMemory(@DeviceMode, sizeof(DeviceMode));
Delphi-Quellcode:
Letzteres empfiehlt zumindest das MSDN:
DeviceMode.dmSize := sizeof(DeviceMode));
Zitat:
|
Re: ChangeResolution dreht Desktop???
okay, danke soweit, werd das mal morgen in info testen!
aber mal nen anderer Ansatz, in der Funktion steht doch am Anfang
Delphi-Quellcode:
kann man da nich einfach noch (dmDisplayOrientation = xxx) anfügen? vielleicht hat noch jemand ne Ahnung welche Werte dmDisplayOrientation annehmen kann?
with DeviceMode do
if (dmPelsWidth = sizex) and (dmPelsHeight = SizeY) and (dmBitsPerPel = bpp) then begin |
Re: ChangeResolution dreht Desktop???
Soweit ich mich erinnere ist dmOrientation eine einfache Angabe in Grad des Winkels um den gedreht wird. In diesem Fall sollte also die Prüfung auf =0 vollkommen ausreichen.
|
Re: ChangeResolution dreht Desktop???
Zitat:
![]() ![]() Gruß, teebee |
Re: ChangeResolution dreht Desktop???
Ausserdem musst du durch eine Bitmaske (dmFields) angeben welche Informationen in der DEVMODE Struktur gültig sind! So lange du also dieses Bit für die Orientation (DM_DISPLAYORIENTATION) nicht setzt, wird diese auch nicht beachtet.
|
Re: ChangeResolution dreht Desktop???
mh, bin glaub ich zu dämlich dazu :wall:
also in dem TDevMode von Delphi 7 gibts gar kein dmDisplayOrientation was jetzt :D |
Re: ChangeResolution dreht Desktop???
Hallo,
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz