Tipp 0216 Vista-Dialog für besondere Warnungen
Autor/Einsender:
Datum:
  Michael Werner
30.05.2013
Entwicklungsumgebung:   VB.Net 2008
Framework:   2.0
Vielleicht möchten Sie einen besonders hervorgehobenen Dialog, z.B. eine Warnung z.B. vor dem Löschen von etwas, einsetzen. Um den User aus seiner gewohnten Lethargie wachzurütteln, wird ein optisch auffälliger Vista-Dialog mit roten Elementen angezeigt. Dazu nutzen Sie die API-Funktion TaskDialog aus der comctl32.dll. Diese ersetzt sozusagen die MessageBox und ist erheblich auffälliger für den Anwender und wird eher wahrgenommen als ein Standarddialog. Die API-Funktion TaskDialog besitzt eine Reihe von Parametern, mit denen Aussehen, Icon, Buttons und Verhalten beeinflusst werden können. In diesem Tipp wird nur eine Möglichkeit dargestellt. Da der TaskDialog erst ab Vista und Windows 7 funktioniert, wird das Betriebssystem  geprüft. Alternativ wird der normale MessageBox-Dialog aufgerufen,
wenn es sich um ein älteres Betriebssystem handelt.
 
'Die API-Funktion TaskDialog aus der comctl32.dll
Private Declare Auto Function TaskDialog Lib "comctl32.dll" _
      (ByVal hWnd As IntPtr, ByVal hInstance As IntPtr, ByVal _
      WindowTitle As String, ByVal MainInstruction As String, _
      ByVal Content As String, ByVal CommonButton As Integer, _
      ByVal DialogIcon As Integer, ByRef PushedButton As _
      Integer) As Integer

Public Enum eIcons
  NoIcon = 0
  Warning = -1
  [Error] = -2
  Information = -3
  Question = 32514
  SecurityShield = -4
  SecurityShieldBlueBack = -5
  SecurityShieldWarning = -6
  SecurityShieldError = -7
  SecurityShieldOk = -8
  SecurityShieldGrey = -9
End Enum

Public Enum eButtons
  'Rückgabewerte für gedrückte Schaltflächen
  OK = 1
  YES = 2
  NO = 4
  CANCEL = 8
  RETRY = 16
  CLOSE = 32
End Enum

Private Sub ListeLöschenToolStripMenuItem_Click(ByVal sender As _
    System.Object, ByVal e As System.EventArgs) Handles _
    ListeLöschenToolStripMenuItem.Click
  'Vista-Dialog oder normaler Dialog
  If Environment.OSVersion.Version.Major >= 6 Then
    'Betriebssystem ab Vista
    Dim ret As eButtons = Nothing
    Dim iBtn As Integer = 0
    Dim title As String = "Achtung! Sind Sie sich sicher?"
    Dim instruction As String = "Wirklich alle Einträge löschen?"
    Dim content As String = "Achtung: Es wird ALLES gelöscht!"
    'Systemsound
    System.Media.SystemSounds.Hand.Play()
    'Aufrufparamater übergeben
    TaskDialog(CType(0, IntPtr), CType(0, IntPtr), title, _
        instruction, content, eButtons.YES Or eButtons.NO, _
        CInt(&HFFFF& And eIcons.SecurityShieldError), iBtn)
    'Rückgabewert zurückgeben
    ret = GetButtonFromValue(iBtn)
    If ret = eButtons.YES Then
      'Es wird gelöscht
      lst1.Items.Clear()
    Else
      MessageBox.Show("Es wurde abgebrochen.", "Abbruch", _
          MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
  Else
    'Normaler Standarddialog als Ersatz, da kein Vista oder höher.
    MessageBox.Show("Nur bei einem Betriebssystem an Vista,"_
        "Windows 7 oder höher ist der rote Vista-Dialog möglich."_
        " Deshalb folgt hier noch einmal die Abfrage mit dem "_
        "Standarddialog MessageBox", "Hinweis", _
        MessageBoxButtons.OK, MessageBoxIcon.Information)
    If MessageBox.Show("ACHTUNG! Sind Sie sich wirklich sicher, "_
      "dass Sie ALLE Einträge löschen wollen?", "Achtung: Es "_
      "wird ALLES gelöscht!", MessageBoxButtons.YesNo, _
      MessageBoxIcon.Question) = _
      Windows.Forms.DialogResult.Yes Then
        'Es wird gelöscht
        lst1.Items.Clear()
    Else
      MessageBox.Show("Es wurde abgebrochen.", "Abbruch", _
          MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
  End If

End Sub
 
Weitere Links zum Thema
Benutzerdefinierte MessageBox

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (15 kB) Downloads bisher: [ 201 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 19. Oktober 2013