Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0072: Bildschirmauflösung ändern

 von 

Beschreibung 

Dieser Tipp stellt eine Veränderung des Tipps 0072 dar, welcher ohne Kontrollinstanzen die Auflösung geändert hat. Dabei kann es passieren, dass Werte zugewiesen werden, die zwar die Hardware unterstützt, aber Probleme bereitet.

In der aktuellen Fassung werden alle möglichen Auflösungen und Farbtiefen enumeriert. Falls die Auflösung geändert wird, so wird diese nach 10 Sekunden automatisch zurückgesetzt.

Update am 06.10.2016: Dieser Tipp wurde von Nils Thomsen mithilfe des Tippuploads überarbeitet und ersetzt.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

ChangeDisplaySettingsA (ChangeDisplaySettings), EnumDisplaySettingsA (EnumDisplaySettings)

Download:

Download des Beispielprojektes [2.47 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Timersteuerelement "tmrReset"
' Steuerelement: Schaltfläche "cmdTest"
' Steuerelement: Schaltfläche "cmdReset"
' Steuerelement: Rahmensteuerelement "frmInfo" (Index von 0 bis 2)
' Steuerelement: Beschriftungsfeld "lblNewResolution" auf frmInfo
' Steuerelement: Listen-Steuerelement "lstResolutions"
' Steuerelement: Beschriftungsfeld "lblInfo" auf frmInfo
Option Explicit

'Liefert Informationen über die Bildschirmauflösung(en)
Private Declare Function EnumDisplaySettings Lib "user32" _
        Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName _
        As Long, ByVal iModeNum As Long, lpDevMode As Any) _
        As Boolean
        
'Ändert die Bildschirmeinstellungen
Private Declare Function ChangeDisplaySettings Lib "user32" _
        Alias "ChangeDisplaySettingsA" (lpDevMode As Any, _
        ByVal dwFlags As Long) As Long

Const CCDEVICENAME As Long = 32&
Const CCFORMNAME As Long = 32&

'Flags, die angeben, welche Werte geändert werden sollen
Const DM_BITSPERPEL As Long = &H40000           'Farbtiefe
Const DM_PELSWIDTH As Long = &H80000            'Breite
Const DM_PELSHEIGHT As Long = &H100000          'Höhe
Const DM_DISPLAYFREQUENCY As Long = &H400000    'Wiederholfrequenz

Const ENUM_CURRENT_SETTINGS As Long = -1&       'Flag für aktuelle Einstellungen

'Flags, die angeben, welcher Modus verwendet werden soll
Const CDS_UPDATEREGISTRY = &H1  'Änderungen in Registry eintragen (Änderung nur für aktuellen Benutzer)
Const CDS_TEST = &H2            'Nur testen, nicht ändern
Const CDS_FULLSCREEN = &H4      'Vollbildanwendung (temporäre Änderung)
Const CDS_GLOBAL = &H8          'Global (Änderungen für alle Nutzer)
Const CDS_RESET = &H40000000    'Neuzuweisung, selbst wenn sich die Auflösung nicht geändert hat

'Rückgabewerte von ChangeDisplaySettings
Private Const DISP_CHANGE_SUCCESSFUL As Long = 0&
Private Const DISP_CHANGE_RESTART    As Long = 1&
Private Const DISP_CHANGE_FAILED     As Long = -1&
Private Const DISP_CHANGE_BADMODE    As Long = -2&
Private Const DISP_CHANGE_NOTUPDATED As Long = -3&
Private Const DISP_CHANGE_BADFLAGS   As Long = -4&
Private Const DISP_CHANGE_BADPARAM   As Long = -5&

'Rückgabe der aktuellen Einstellungen
Private Type DEVMODE
    dmDeviceName As String * CCDEVICENAME
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * CCFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
End Type

'Enum für Funktion "SetScreen"
Private Enum enmChangeMode
    Temporary = 0
    CurrentUser = 1
    Systemwide = 2
End Enum

Dim uOldResolution As DEVMODE   'Beinhaltet die alten Einstellungen (für Reset)
Dim bReset As Byte              'Speichert den Wert für den Countdown (Reset)
Dim Firststart As Boolean       'Speichert, ob es sich um die erste Ausführung handelt

Private Sub Form_Load()
    Dim Result As Long
    Dim Dev As DEVMODE
    Dim Counter As Integer
    
    Result = -1 'Nicht gesetzt
    Counter = 0
    
    lstResolutions.Clear
    lblInfo.Caption = vbNullString
    
    Do While Result <> 0
        'Werte erhalten
        Result = EnumDisplaySettings(0&, Counter, Dev)
           
        If Not Result = 0 Then
            'In Liste einfügen
            lstResolutions.AddItem Dev.dmPelsWidth & "x" & Dev.dmPelsHeight & " " & Dev.dmBitsPerPel & " Bit @ " & Dev.dmDisplayFrequency
            
            Counter = Counter + 1
        Else
            'aktuelle Auflösung in Erfahrung bringen
            Result = EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, Dev)
            
            'Zwischenspeichern, falls Erststart
            If Not Firststart Then
                uOldResolution = Dev
                Firststart = True
            End If
            
            'Anzeigen und auswählen
            lblInfo.Caption = Dev.dmPelsWidth & "x" & Dev.dmPelsHeight & " " & Dev.dmBitsPerPel & " Bit @ " & Dev.dmDisplayFrequency
            lstResolutions.Text = lblInfo.Caption
            
            Exit Do
        End If
        
        DoEvents
    Loop
End Sub

Private Sub lstResolutions_Click()
    'In Label eintragen
    lblNewResolution.Caption = lstResolutions.Text
End Sub

Private Sub cmdReset_Click()
    'Alten Wert zurückschreiben
    SetScreen uOldResolution.dmPelsWidth, uOldResolution.dmPelsHeight, uOldResolution.dmDisplayFrequency, _
        uOldResolution.dmBitsPerPel, False, Systemwide
        
    'Timer deaktivieren und zurücksetzen
    tmrReset.Enabled = False
    bReset = 0
    cmdTest.Caption = "Testen"
End Sub

Private Sub cmdTest_Click()
    Dim uDev As DEVMODE
    
    'Aus dem String die Daten rückgewinnen
    uDev = ParseResolutionInfo(lblNewResolution.Caption)
    
    If Not cmdTest.Caption = "Testen" Then  'Falls nicht getestet wird -> Einstellungen beibehalten
        tmrReset.Enabled = False
        cmdTest.Caption = "Testen"
        bReset = 0
    Else    'Falls zuerst getestet werden soll
        If SetScreen(uDev.dmPelsWidth, uDev.dmPelsHeight, uDev.dmDisplayFrequency, uDev.dmBitsPerPel, True) = True Then
            'Falls der Test erfolgreich war, so kann die Einstellung nun geändert werden. Fehler sollten dabei keine auftreten
            Call SetScreen(uDev.dmPelsWidth, uDev.dmPelsHeight, uDev.dmDisplayFrequency, uDev.dmBitsPerPel, False, Temporary)
            
            'Reset-Timer aktivieren
            tmrReset.Enabled = True
        End If
    End If
End Sub

Private Sub tmrReset_Timer()
    If bReset = 10 Then
        'Zurücksetzen
        cmdTest.Caption = "Testen"
        Call cmdReset_Click
        
        tmrReset.Enabled = False
        bReset = 0
    Else
        'Countdown anzeigen
        cmdTest.Caption = "Übernehmen (" & 10 - bReset & ")"
        bReset = bReset + 1
    End If
End Sub

' Funktion SetScreen
'
' Erwartet:
'   X           Neue Auflösung in der Horizontalen
'   Y           Neue Auflösung in der Vertikalen
'   NewFreq     Neue Bildwiederholfrequenz
'   ColorDepth  Die neue Farbtiefe
'   IsTestMode  Gibt an, ob nur getestet werden soll
'   ChangeMode  Gibt an, auf welche Art die Auflösung geändert werden soll
'
'               Parameter:
'
'               Temporary
'                   Es handelt sich um eine Vollbildanwendung. Die Auflösung wird automatisch zurückgestellt,
'                   sobald die Anwendung beendet wurde
'
'               Current User
'                   Die Änderungen sollen nur für den aktuell angemeldeten Benutzer übernommen werden.
'                   Andere Benutzerkonten sind von dieser Änderung nicht betroffen.
'
'               Systemwide
'                   Die Änderungen werden Global für alle Nutzer dauerhaft übernommen
'
' Rückgabe:
'   - True, falls die Einstellungen geändert wurden
'   - False, falls die Einstellungen nicht geändert wurden
'     Es wird ein betreffender Hinweis ausgegeben
Private Function SetScreen(ByVal X As Long, ByVal Y As Long, ByVal NewFreq As Byte, ByVal ColorDepth As Byte, _
    ByVal IsTestMode As Boolean, Optional ByVal ChangeMode As enmChangeMode) As Boolean
    
    Dim Result As Long
    Dim Dev As DEVMODE
    Dim NewFlags As Long
    
    Result = EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, Dev)    'Aktuellen Einstellungen erfahren
    If Result <> 0 Then
        'Neue Werte festlegen
        Dev.dmDisplayFrequency = NewFreq
        Dev.dmBitsPerPel = ColorDepth
        Dev.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY Or DM_BITSPERPEL    'siehe Deklarationsteil
        Dev.dmPelsWidth = X
        Dev.dmPelsHeight = Y
   
        Result = ChangeDisplaySettings(Dev, CDS_TEST)   'Neuen Grafikmodus testen
        
        'Ergebnis auswerten
        If Result = DISP_CHANGE_FAILED Or Result = DISP_CHANGE_BADMODE Then
            'Hardwarefehler
            MsgBox "Der ausgwählte Modus wird nicht unterstützt!", vbExclamation, "Fehlgeschlagen"
        ElseIf Result = DISP_CHANGE_BADFLAGS Or Result = DISP_CHANGE_BADPARAM Then
            'Softwarefehler
            MsgBox "Ungültige Parameter", vbExclamation, "Fehler"
        ElseIf Result = DISP_CHANGE_SUCCESSFUL Then
            'Erfolgreich getestet. Falls nicht im Testmodus, fortsetzen
            If Not IsTestMode Then
                'Neue Flags zusammensetzen
                Select Case ChangeMode
                    Case 0:
                        NewFlags = CDS_RESET Or CDS_FULLSCREEN
                    Case 1:
                        NewFlags = CDS_RESET Or CDS_UPDATEREGISTRY
                    Case 2:
                        NewFlags = CDS_RESET Or CDS_GLOBAL Or CDS_UPDATEREGISTRY
                End Select
                        
                'Neue Werte zuweisen
                Result = ChangeDisplaySettings(Dev, NewFlags)
                
                'Ergebnis auswerten
                If Result = DISP_CHANGE_RESTART Then
                    MsgBox "Es ist ein Neustart erforderlich!", vbInformation, "Neustart"
                    
                    Exit Function
                ElseIf Result = DISP_CHANGE_NOTUPDATED Then
                    MsgBox "Fehler beim Schreiben in die Registry!", vbExclamation, "Fehler"
                    
                    Exit Function
                ElseIf Not Result = 0 Then
                    MsgBox "Es trat ein unbekannter Fehler auf!"
                    
                    Exit Function
                End If
                
                Call Form_Load
            End If
            
            SetScreen = True
        Else
            MsgBox "Unbekannter Fehler!", vbCritical, "Fehler"
            Exit Function
        End If
    End If
End Function

'Zerlegt den String (z.B. 1024x786 32 Bit @ 60 Hz) in die einzelnen Werte
Private Function ParseResolutionInfo(ByVal strResolution As String) As DEVMODE
    Dim Result As DEVMODE
    Dim strarr1() As String, strarr2() As String
    
    strarr1 = Split(strResolution, " ")
    strarr2 = Split(strarr1(0), "x")
        
    Result.dmPelsWidth = strarr2(0)
    Result.dmPelsHeight = strarr2(1)
    Result.dmBitsPerPel = strarr1(1)
    Result.dmDisplayFrequency = strarr1(4)
    
    ParseResolutionInfo = Result
End Function

'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 31 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von wpdqsisv am 08.08.2011 um 20:24

lqlEyC <a href="http://czeyocyvejbz.com/">czeyocyvejbz</a>, [url=http://gbhwvykwtpmn.com/]gbhwvykwtpmn[/url], [link=http://ayansybnhxlz.com/]ayansybnhxlz[/link], http://nsdrnxjrwubl.com/

Kommentar von Kwon am 01.06.2007 um 20:05

Habe a bisle umgeschrieben, geht bei mir sogar unter .NET !!
Habe aber noch ein Problem, nach wiederherstellung der
Auflösung stimmen die Icons nicht. Sind nicht an
der Position wo Sie sein sollen. Kann da mir einer helfen ?

Kommentar von Löcken am 24.02.2007 um 22:21

Hallo Leute,
Tipp ist prima und funktioniert bei Röhrenbildschimen einwandfrei, Bei LCD Bildschim musste ich "dev.dmDisplayFrequency = 85" ändern in 75 (Hz) dann gings.
Gruss
Theo 24.02.07

Kommentar von Matthias am 02.08.2006 um 22:59

Ich grüße Sie,
habe mit obigem Code gute Erfahrungen gemacht, jedoch ist jetzt folgendes Problem aufgetreten:
Ich habe eine Spieleprogrammierung am laufen, und das Problem ist, das die Auflösung bei Wide-Screen-Bildschirmen nicht umgestellt wird, somit überspringt er folgenden Befehl:

Call SetScreen(1280, 800)
, kommt mir jedenfalls so vor !
Mache ich etwas falsch, oder stimmt das wirklich, dass dieser Befehl nur bestimmte bekannte Auflösungen einstellen kann ?
Bitte um baldige Hilfe,
DANKE !!!

Kommentar von Timo am 30.03.2006 um 14:23

Hallo Hecki

Das ist was fürs Forum
[url]http://foren.activevb.de/cgi-bin/foren/list.pl?forum=4[/url]
Das Case ist bezogen auf "Index" und nicht die Value Eigenschaft der Optionsbox.

Timo

Kommentar von Hecki am 30.03.2006 um 12:40

Hallo aus dem schönen Regensburg.

Es ging um die Änderung der Bildschirmauflösung.

Private Sub Option1_Click(Index As Integer)
Dim x As Long, y As Long

Select Case Index
Case 0: x = 800: y = 600
Case 1: x = 1024: y = 768
Case 2: x = 1152: y = 864
End Select

Call SetScreen(x, y)
End Sub

Jetzt kommt folgende Meldung:
"Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit dem selben Namen."

Wie kann ein Optionsfeld 3 Cases haben? Kann doch nur 2 Cases haben (0 oder 1), oder?

Bitte helft mir.

lg hecki

Kommentar von Sandro am 06.06.2005 um 08:55

Hallo!

Hab versucht die Beispieldatei im VBA zu importieren. Leider kommt eine Fehlermeldung " Formklasse wird im VBA nicht unterstützt...."
Da ich in meinem Projekt Scalierbereiche usw. fest definiert habe, aber jeder Rechner hier im Büro leicht anders von der Auflösung her eingestellt ist, wäre der Code für mich die absulute Vollendung ;-)
Kann mir jemand einen Tip geben oder sagen wie ich die .frm und .vbp dateien anders importieren kann. Hab sie mal versucht mit dem Editor zu öffnen und hätte ja den Text. Außerdem steht er ja nochmals auf dieser Seite....! Wo müßte ich den einfügen? Unter "diese Arbeitsmappe" ? Oder ein eigenes User Form erstellen? Bin nur ein VBA Anfänger und für jede Hilfe dankbar!

Kommentar von Bernd Frankenberger am 15.02.2005 um 10:08

Hallo,

für mich war nur die funktion der Umschaltung wichtig, damit die Anwendung einwandfrei Funktioniert. Bei mir stellt dieser Code die Auflösung auch um, wenn diese bereits auf der gewählten ist (nach Programmstart). Habe mich allerdings nicht weiter darum gekümmert. Die Icons stimmen spätestens nach dem Neustart wieder. Das Hintergrundbild kann sich nicht skalieren, da das eine eigene Option ist. Leider kann ich hier nicht weiter helfen.
Dieser Code ist praktisch in dieser Version nur für eine Auflösungsänderung in Abhängigkeit zu Anwendung geeignet. Hat jemand einen Code, der alle Funktionen beinhaltet?

Gruß
Bernd (FinalAeris)

Kommentar von Franz Grillmeier am 14.02.2005 um 15:28

Das Umschalten der Auflösung funktioniert zwar, aber warum werden die Werte Screen.Width und Screen.Height nicht aktualisiert? Ausserdem wird das Hintergrundbild des Desktops nicht angepasst, und auch das Raster für die Icon-Abstände stimmt nach einem Zurückschalten auf die ursprüng-liche Auflösung nicht mehr.

Kommentar von Bernd Frankenberger am 16.01.2005 um 12:32

Hallo,

funktionierte Einwandfrei sowohl unter Win98 sowie unter WinXP
Habe die Anwendung unter VB5 erstellt.

Spitzen Seite und Hilfe...

Kommentar von Timo am 22.12.2004 um 21:35

Hallo. Habs getestet und mich gefreut, dass alles funktionierte. Dann kompiliert und auf dem anderen Computer gemerkt, dass es nicht mehr funktioniert. Win Prof nicht möglich?

Kommentar von DJ Nuno am 17.10.2004 um 14:24

hallo,

hatte das problem auch das ich nicht auf die auflössung 1280 x 1024 kahm...

bis mir die kleine zeile:

Dev.dmDisplayFrequency = 85

auf gefallen ist, vieleicht ist das problem das eure monitore bei einer solchen auflössung keine 85 Herz hinbekommen :)...

P.S.
Auch meiner nicht

Kommentar von Holger am 18.05.2004 um 14:23

Tip0072, Frage von Enidal am 03.07.2001 um 17:54:

Das mit dem Umschalten klappt ja schon ganz super, aber allerdings bleibt bei mir die Task-Leiste an der alten stelle und stört somit.

Gibt es hier inzwischen eine Lösung?

Danke Holger

Kommentar von m am 02.03.2004 um 13:52

funktioniert nicht unter vb6 win2k!

Kommentar von Josch am 29.02.2004 um 19:49

hi
funzt bei mir alles gut (XP). Wie kann ich die Farbtiefe ändern?

Kommentar von Christoph Geiser am 21.12.2003 um 18:36

Felix hat das ziemlich weit oben schön beschrieben, und bei mir funktioniert das problemlos:

Auch mit der Frequenz ist es unter XP keine Problem : einfach
Dev.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
weglassen. Dann kann mit
Dev.dmDisplayFrequency
die Frequenz die man möchte einstellen.
Result liefert dann zurück ob etwas verändert wurde.

Kommentar von Wolli am 05.08.2003 um 14:45

Ich habe versucht, auch die Umstellung von große/kleine Schriftart vorzunehmen:

Private Const DM_LOGPIXELS = &H200000

Private Type DEVMODE
...
dmLogPixels As Long
End Type

Public Sub ChangeScreenResolution(Optional iWidth As Long = 1024, _
Optional iHeight As Long = 768, _
Optional iFreq As Long = 75, Optional iPixel As Long = 96)
Dim A As Boolean, i As Long, B As Long, DevM As DEVMODE
i = 0
Do
i = i + 1
Loop Until Not EnumDisplaySettings(0&, i, DevM)
With DevM
.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY Or DM_LOGPIXELS
.dmPelsWidth = iWidth
.dmPelsHeight = iHeight
.dmDisplayFrequency = iFreq
.dmLogPixels = iPixel

End With
ChangeDisplaySettings DevM, 0&
End Sub

Leider läuft das so nicht.

Kommentar von Felix Weiß am 09.06.2003 um 10:53

Auch mit der Frequenz ist es unter XP keine Problem : einfach
Dev.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
weglassen. Dann kann mit
Dev.dmDisplayFrequency
die Frequenz die man möchte einstellen.
Result liefert dann zurück ob etwas verändert wurde.

Kommentar von Jan-Christopher am 07.11.2002 um 18:45

Toll! Bei mir hats funktioniert, nur bei 1152x864 hats nicht geklappt

Kommentar von Para am 03.10.2002 um 17:45

dein link hört sich ja gut an aber funktionieren tut er nich

Kommentar von Asfa am 20.08.2002 um 09:52

Der Tipp ist nach wie vor Müll. Geht nur auf 60 Hertz-Basis. Hier habe ich ein Beispiel das das besser kann, aber ich verstehe den Code leider nicht. dieses Beispiel kann alle von der Grafikkarte+Monitor unterstützten Modes auflisten und ansteuern ohne Probleme. Aber ich konnte es nicht zu einer Funktion umformen, mit der man nach Belieben eine Farbzahl, eine Frequenz und eine Auflösung einstellen kann. Da müsste ein Profi ran. Aber das würde Tipp 72 masslos aufwerten, wenn jemand daraus eine Funktion basteln würde. Also hier der im Upload befindliche Code von mir, der überall funktioniert, aber wie gesagt sehr schwer zu verstehen ist.
http://www.activevb-archiv.net/cgi-bin/VBupload/download.pl?id=1049
Gruss Asfa

Kommentar von Günter Weil am 25.07.2002 um 13:15

Hallo, bei mir funktioniert die Änderung der Bildwiederholfrequenz, wenn
Const DM_DISPLAYFREQUENCY = &H400000
gesetzt ist. Zusätzlich stelle ich noch die Farbtiefe mit nachfolgenden 2 Zeilen ein:
Dev.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY Or DM_BITSPERPEL
Dev.dmBitsPerPel = Bits
Wobei die Variable Bits& die Farbtiefe in Byte enthält.

Kommentar von Carsten am 03.06.2002 um 11:49

Wie es schon andere auf dieser Seite gepostet haben, habe ich auch Probleme mit der Bildschirmfrequenz. Das Ändern der Auflösung funzt problemlos, bei der Frequenz wird der Wert aber nicht übernommen, oder es wird ein kleinerer Wert eingestellt, als es von Grafikkarte und Monitor möglich wäre. Gibt es da inzwischen schon Lösungen?

Kommentar von Baltimore am 29.05.2002 um 01:36

Die Lösung bezüglich auflösungsänderung und Frequenz funzt bei mir super....jedoch nur bis 1600 x 1024;
bei 1600 x 1200 ist schluß mit ändern der macht das einfach nicht.
ändere ich die Frequenzykonstante jedoch unter &H400000 gehts, aber nur bei 60 Hz obwohl 75 Hz möglich wären.
Was für wärte kann und darf ich in diese Konstante überhaupt verwenden und wie komme ich auf diesen Wert....
Ne Antwort wär echt super...

Kommentar von Johannes Günther am 28.01.2002 um 21:30

Hallo, mit welchem VB-Code ist es möglich die Bildwiederholungsfrequenz auf 85 Hz setzen?
Freundliche Grüße und besten Dank
Johannes

Kommentar von OlafB am 22.10.2001 um 11:46

Umschalten funktioniert prinzipiell. Allerdings kommt es immer wieder mal vor, daß beim Wechseln auf 1280x1024 und anschließendem Zurückschalten der Auflösung auf die normalerweise eingestellte Auflösung von 800x600 irgendetwas komisches rauskommt (Taskleiste weg und Bild irgendwie verzerrt). System = W2000 mit VB6. Kann mir jemand helfen ?

Kommentar von PBR am 06.09.2001 um 21:11

wie kann ich 256 Farben einstellen???

Kommentar von Enidal am 03.07.2001 um 17:54

das mit dem Umschalten klappt ja schon ganz super, aber allerdings bleibt bei mir die Task-Leiste an der alten stelle und stört somit. Ist es möglich das die Leiste auch mitrückt. Ich bitte um schnelle Hilfe, da ich diese Anweisung dringend benötige ... Danke

Kommentar von Nock am 21.01.2001 um 19:24

kann man auch 320 x 240 hinbekommen?

Kommentar von CINIC am 10.01.2001 um 16:02

Gibts auch ne Möglichkeit das in VB 3 zu machen?

Kommentar von Micha am 09.11.2000 um 14:43

Läßt sich außer der Auflösung und der Farbtiefe auch die Bildwiederholfrequenz umschalten?