Tipp 0354 Schleifen vorzeitig abbrechen
Autor/Einsender:
Datum:
  Gerhard Leutkircher
20.08.2003
Entwicklungsumgebung:   VB 6
Soll dem Benutzer die Möglichkeit gegeben werden einen Prozess abzubrechen oder auf Tastaturereignisse zu reagieren, ist DoEvents für einfache Operationen recht hilfreich. Allerdings sollte diese Funktion sehr sparsam eingesetzt werden, da z.B. eine Schleife durch die laufende Übergabe des Prozesses an das Betriebssystem um den Faktor 10.000 verlangsamt wird.
Eine wesentlich bessere Möglichkeit eventuell vorhandene Maus- bzw. Tastatur-Ereignisse abzuarbeiten, bietet hier die API-Funktion GetInputState, mit der überprüft werden kann, ob überhaupt solche Ereignisse vorliegen.
 
Option Explicit

Private Declare Function GetInputState Lib "user32" () As Long

Dim m_blnCancel As Boolean

Private Sub Form_Load()
  cmdAbbrechen.Enabled = False
  cmdAbbrechen.Visible = False

  cmdBeenden.Move cmdAbbrechen.Left, cmdAbbrechen.Top
  cmdBeenden.Cancel = True
End Sub

Private Sub cmdAbbrechen_Click()
  m_blnCancel = True
End Sub

Private Sub cmdStart_Click()
  Dim i As Long

  m_blnCancel = False

  ToogleButtons
  cmdAbbrechen.Cancel = True

  For i = 1 To 100000
    Me.Cls
    Me.CurrentX = 520
    Me.CurrentY = 400
    Me.Print CStr(i)

    If GetInputState() Then
      DoEvents
      If m_blnCancel Then Exit For
    End If
  Next

  ToogleButtons
  cmdBeenden.Cancel = True
End Sub

Private Sub ToogleButtons()
  cmdStart.Enabled = Not cmdStart.Enabled

  cmdAbbrechen.Enabled = Not cmdAbbrechen.Enabled
  cmdAbbrechen.Visible = Not cmdAbbrechen.Visible

  cmdBeenden.Enabled = Not cmdBeenden.Enabled
  cmdBeenden.Visible = Not cmdBeenden.Visible

  DoEvents
End Sub
 

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (2,8 kB) Downloads bisher: [ 839 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

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

Seite empfehlen Bug-Report
Letzte Aktualisierung: Donnerstag, 15. September 2011