| |

Visual-Basic EinsteigerRe: Sollte funktionieren. Wie sieht denn Dein Code aus? (oT) | |  | Autor: TurboKanne | Datum: 13.09.01 21:34 |
| Na, ich habe genau den aus den Tipps & Tricks (Bildschirmauflösung ermitteln und ändern) übernommen. Dann habe ich im letzten Teil (form_load) die x- und y-werte nur von 800 bzw. 600 auf 1024 bzw 768 geändert.
Es sieht also folgendermaßen aus :
' zunächst die benötigten API-Deklarationen
Private Declare Function GetDeviceCaps Lib "gdi32" _
(ByVal hDC As Long, ByVal nIndex As Long) As Long
Private Declare Function EnumDisplaySettings Lib _
"user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, ByVal iModeNum As Long, _
lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings Lib _
"user32" Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, ByVal dwFlags As Long) As Long
Private Const DM_BITSPERPEL = &H40000
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
Private Const DM_DISPLAYFREQUENCY = &H400000
Private Const CDS_UPDATEREGISTRY = &H1
Private Const CDS_TEST = &H2
Private Const DISP_CHANGE_SUCCESSFUL = 0
Private Const DISP_CHANGE_RESTART = 1
Private Const DISP_CHANGE_FAILED = -1
Private Const DISP_CHANGE_BADMODE = -2
Private Const DISP_CHANGE_NOTUPDATED = -3 'Nur NT!
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
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
' aktuelle Bildschirm-Einstellungen ermitteln
' x, y = Auflösung
' Colors = Farbtiefe (4,8,16,24,32)
Public Sub GetCurrentSettings(ByVal hDC As Long, _
x As Integer, y As Integer, Colors As Integer)
x = Screen.Width / Screen.TwipsPerPixelX
y = Screen.Height / Screen.TwipsPerPixelY
Colors = GetDeviceCaps(hDC, BITSPIXEL)
End Sub
' neue Bildschirm-Einstellung setzen
' x,y = neue Auflösung
' Colors = neue Farbtiefe
' 4 = 16 Farben
' 8 = 256 Farben
' 16 = HighColor
' 24 = 24-Bit
' 32 = TrueColor
Public Sub ChangeSettings(ByVal hDC As Long, _
x As Integer, y As Integer, Colors As Integer)
Dim lResult As Long
Dim lIndex As Long
Dim DevM As DEVMODE
With DevM
.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or _
DM_BITSPERPEL Or DM_DISPLAYFREQUENCY
.dmPelsWidth = x
.dmPelsHeight = y
.dmBitsPerPel = Colors
End With
lResult = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
Select Case lResult
Case DISP_CHANGE_RESTART
If MsgBox("Damit die eingestellte Auflösung " & _
"wirksam wird, ist es notwendig, daß Windows " & _
"neu gestartet wird.", 65) = vbOK Then
RebootSystem EWX_REBOOT
End If
Case DISP_CHANGE_FAILED
MsgBox "Die Auflösung konnte nicht " & _
"geändert werden.", 64
Case DISP_CHANGE_BADMODE
MsgBox "Der geforderte Grafikmodus wird " & _
"von Ihrem System nicht unterstützt.", 64
Case DISP_CHANGE_NOTUPDATED
MsgBox "Die neuen Einstellungen konnten " & _
"nicht in der Registry gespeichert werden.", 64
End Select
End Sub
' Prüfen der Einstellungen
Private Sub Form_Load()
Dim x As Integer
Dim y As Integer
Dim Colors As Integer
' Ermitteln der aktuellen Einstellungen
GetCurrentSettings Me.hDC, x, y, Colors
' Mindestanforderung:
' 800x600 bei 16bit Farbtiefe (TrueColor)
If x < 1024 Or y < 768 Or Colors < 16 Then
' Mindestanforderung nicht erfüllt
If MsgBox("Für den korrekten Ablauf der " & _
"Anwendung muß eine Bildschirm-Auflösung " & _
"von mind. 1024x800 bei einer Farbtiefe von " & _
"16Bit (TrueColor) eingestellt sein!" & _
vbCrLf & vbCrLf & _
"Einstellungen entsprechend ändern?", _
35) = vbYes Then
' Einstellung ändern
ChangeSettings Me.hDC, 1024, 768, 16
Else
' Programm beenden
End
End If
End If
End Sub |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|