Kann jemand die Windows-API angeben, die man verwenden muss, um die Bildwiederholfrequenz programmatisch ändern zu können?
Antworten
Zu viele Anzeigen?Können Sie ChangeDisplaySettings wie zuvor beschrieben verwenden. Sie sollten jedoch EnumDisplaySettings verwenden, um eine Liste der gültigen Kombinationen von (Farbabstufung, Breite, Höhe, Modus und Häufigkeit) zu erhalten.
Beispielcode (in Delphi, aber die Übersetzung sollte trivial sein)
Gültige Anzeigemodi abrufen
i := 0;
while EnumDisplaySettings(nil, i, dm) do begin
Memo1.Lines.Add(Format('Color Depth: %d', [dm.dmBitsPerPel]));
Memo1.Lines.Add(Format('Resolution: %d, %d', [dm.dmPelsWidth, dm.dmPelsHeight]));
Memo1.Lines.Add(Format('Display mode: %d', [dm.dmDisplayFlags]));
Memo1.Lines.Add(Format('Frequency: %d', [dm.dmDisplayFrequency]));
Inc(i);
end;
Anzeigemodus einstellen
// In this case i is an index in the list of valid display modes.
if EnumDisplaySettings(nil, i, dm) then begin
// Sanity check!
if ChangeDisplaySettings(dm, CDS_TEST) = 0) then
ChangeDisplaySettings(dm, 0); // Use CDS_UPDATEREGISTRY if this is the new default mode.
end;
Es ist sehr wichtig, eine gültige Kombination zu wählen!
Ich habe dies über eine Google-Suche gefunden. Hoffe, es hilft etwas.
http://www.codeproject.com/KB/winsdk/changerefresh.aspx
http://msdn.microsoft.com/en-us/library/ms533260(VS.85).aspx