vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Jaaaaaaaaaaa 
Autor: unbekannt
Datum: 01.01.02 14:08

Hi Snow,

Monitor wegsprengen, genau da ist das Problem! Ich würde derart gravierende Eingriffe in die Systemmetrics niemals ohne ausdrückliche Zustimmung des Users vornehmen! Dem User wird erklärt, dass die Monitorauflösung geändert wird und dies ggf. zu einer Schädigung führen kann, wenn der Monitor diese Auflösung nicht versaftet. Da man sich weiter auch nicht darauf verlassen kann, dass an dem PC immer der gleiche Monitor hängt, muß diese Frage bei jedem Start gestellt werden, natürlich nur dann, wenn die Auflösung kleiner als die geforderte Auflösung ist. Entscheidet sich der User dafür, das Programm zu starten obwohl sein Monitor diese Auflösung nicht bringt, so ist es sein Problem, wenn der Monitor und/oder die Graphikkarte geschrottet wird und nicht mehr Deines. Da man auch noch den DAU dazurechnen muß, würde ich diese Abfrage sogar zwei Mal ausdrücklich machen.

In VBA würde ich das wie folgt machen:

Ein Modul in das Projekt einfügen.

Option Explicit
 
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
 
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const CDS_UPDATEREGISTRY = &H1
Const CDS_TEST = &H4
Const DISP_CHANGE_SUCCESSFUL = 0
Const DISP_CHANGE_RESTART = 1
Const ENUM_CURRENT_SETTINGS = &HFFFF - 1
 
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
 
Private Dev As DEVMODE
Private MergeSCREENX As Integer
Private MergeSCREENY As Integer
 
Private Const SCREENWIDTH As Integer = 1024
Private Const SCREENHEIGHT As Integer = 768
 
'Diese Prozedur wird automatisch ausgeführt, wenn die
'Anwendung gestartet wird ....
Private Sub Auto_Open()
      Dim JN As Variant  
 
      Application.Visible = False
 
      EnumDisplaySettings(0&,ENUM_CURRENT_SETTINGS, Dev)
 
      If Dev.dmPelsWidth < SCREENWIDTH Then
              JN = Msgbox ("Das vorliegende Programm wurde für eine " & _
                      "Bildschirmauflösung von 1024 x 768 Punkten optimiert. " _
                      & _
                      "Ihre gegenwärtige Bildschirmauflösung ist jedoch" & _
                      "kleiner. " & _
                     String(2, vbCrLf) & _
                      "Bitte vergewissern Sie sich, ob Ihre Hardware," & _
                      "insbesondere "& _
                      "Ihr Monitor mit dieser Auflösung arbeiten kann." & _
                      "Bestätigen Sie " & _
                      "mit JA, wenn dies der Fall ist und NEIN wenn Sie sich" & _
                      "nicht  2& _
                      "Sicher sind oder Ihr Monitor diese Auflösung nicht" & _
                      "verarbeiten kann. "& _
                      String(2, vbCrLf) & _
                      "Sollten Sie fortfahren, wird für evtl. Schäden an der" & _
                      "Hardware keine "& _
                     "Haftung übernommen!",
                     vbQuestion + vbyesno, "W A R N H I N W E I S")
 
               If JN = vbNo Then
                     Application.Visible = True
                     Exit Sub
               Else
                     JN = MsgBox("Soll die Auflösung wirklich geändert" & _
                       "werden?", _
                                 vbExclamation + vbyesno,"Auflösung wird" & _
                                 "geändert")
                      If JN = vbNo then
                          Application.Visible = True
                          Exit Sub
                      End If
               End If   
      End IF
 
      MergeSCREENX = Dev.dmPelsWidth
      MergeSCREENY = Dev.dmPelsHeight
 
      If Dev.dmPelsWidth <> SCREENWIDTH Then
               SetScreen(SCREENWIDTH,SCREENHEIGHT)
      End If
 
      'Hier in das Programm einspringen
      UserForm1.Show
End Sub
 
Private Sub Auto_Close()
     'Evtl. alte Bildschirmauflösung wieder herstellen
 
     If Dev.dmPelsWidth <> MergeSCREENX
           SetScreen(MergeSCREENX, MergeSCREENY)
     End If     
End Sub
 
Private Sub SetScreen(ByVal x&, ByVal y&)
    Dim Result&
 
    Dev.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
    Dev.dmPelsWidth = x
    Dev.dmPelsHeight = y
 
    Result = ChangeDisplaySettings(Dev, CDS_TEST)
    ChangeDisplay
End Sub
cu
Lordchen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Automatisch den Bildschirm anpassen?59Snow31.12.01 12:06
Re: Automatisch den Bildschirm anpassen?470unbekannt31.12.01 14:30
Re: Automatisch den Bildschirm anpassen?34Snow31.12.01 18:05
Meintest Du das hier:756unbekannt31.12.01 18:39
Re: (: Anfänger29Snow01.01.02 19:42
Re: (: Anfänger40Snow01.01.02 19:42
Re: (: Anfänger372unbekannt01.01.02 19:47
Jaaaaaaaaaaa35Snow01.01.02 11:53
Re: Jaaaaaaaaaaa395unbekannt01.01.02 14:08
Re: Jaaaaaaaaaaa56Snow01.01.02 14:50
Re: Jaaaaaaaaaaa576unbekannt01.01.02 14:58
so, so 23Snow01.01.02 15:38
So noch kleine Korrektur 418unbekannt01.01.02 15:02
(: Anfänger28Snow01.01.02 18:43
Re: (: Anfänger413unbekannt01.01.02 18:50
Re: (: Anfänger22Snow01.01.02 20:04
Ganz einfach:362unbekannt01.01.02 20:13
ja, ja22Snow01.01.02 20:43
Re: ja, ja354unbekannt01.01.02 20:55
Re: ja, ja20Snow01.01.02 21:13
Muhhaaa28Snow01.01.02 21:33
Re: Muhhaaa397unbekannt01.01.02 21:39
Re: Jo26Snow02.01.02 07:07

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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