vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Fenster15.11.01
DestroyWindow-Funktion

Die Funktion zerstört ein Fenster des eigenen Programms.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  10.450 

Deklaration:

Declare Function DestroyWindow Lib "user32.dll" ( _
  ByVal hWnd As Long) As Long

Beschreibung:
Diese Funktion Zerstört ein Fenster des eigenen Programms.

Parameter:
hWndErwartet das Handle des Fenster, welches zerstört werden soll.

Rückgabewert:
Ist die Funktion erfolgreich, so ist der Rückgabewert "ungleich 0", andernfalls wird "0" zurückgegeben. Für erweiterte Fehlerinformationen rufen Sie die GetLastError-Funktion auf.


Beispiel:

' Fügen Sie folgenden Code in ein Klassemodul ein
Option Explicit
 
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" ( _
  lpInitCtrls As INITCOMMONCONTROLSEX_TYPE) As Long
 
Private Declare Function CreateWindowEx Lib "user32.dll" _
  Alias "CreateWindowExA" ( _
  ByVal dwExStyle As Long, _
  ByVal lpClassName As String, _
  ByVal lpWindowName As String, _
  ByVal dwStyle As Long, _
  ByVal x As Long, _
  ByVal y As Long, _
  ByVal nWidth As Long, _
  ByVal nHeight As Long, _
  ByVal hWndParent As Long, _
  ByVal hMenu As Long, _
  ByVal hInstance As Long, _
  lpParam As Any) As Long
 
Private Declare Function MoveWindow Lib "user32.dll" ( _
  ByVal hWnd As Long, _
  ByVal x As Long, _
  ByVal y As Long, _
  ByVal nWidth As Long, _
  ByVal nHeight As Long, _
  ByVal bRepaint As Long) As Long
 
Private Declare Function DestroyWindow Lib "user32.dll" ( _
  ByVal hWnd As Long) As Long
 
Private Declare Function SendMessage Lib "user32.dll" _
  Alias "SendMessageA" ( _
  ByVal hWnd As Long, _
  ByVal Msg As Long, _
  ByVal wParam As Long, _
  ByVal lParam As Long) As Long
 
Private Declare Sub CopyMemory Lib "kernel32" _
  Alias "RtlMoveMemory" ( _
  Destination As Any, _
  Source As Any, _
  ByVal Length As Long)
 
Private Type INITCOMMONCONTROLSEX_TYPE
  dwSize As Long
  dwICC As Long
End Type
 
' INITCOMMONCONTROLSEX_TYPE dwICC-Konstanten
' ==========================================
 
' Animate Klasse
Private Const ICC_ANIMATE_CLASS = &H80
 
' Status Bar, Trackbar und Toolbar Klassen
Private Const ICC_BAR_CLASSES = &H4
 
' Rebar Klasse
Private Const ICC_COOL_CLASSES = &H400
 
' Date und Time Picker Klassen
Private Const ICC_DATE_CLASSES = &H100
 
' Hotkey Klasse
Private Const ICC_HOTKEY_CLASS = &H40
 
' IP-Adress Klasse
Private Const ICC_INTERNET_CLASSES = &H800
 
' Listview Klasse
Private Const ICC_LISTVIEW_CLASSES = &H1
 
' Page Klasse
Private Const ICC_PAGESCROLLER_CLASS = &H1000
 
' Progress Bar Klasse
Private Const ICC_PROGRESS_CLASS = &H20
 
' Tab und Tooltip Klassen
Private Const ICC_TAB_CLASSES = &H8
 
' Treeview und Tooltip Klassen
Private Const ICC_TREEVIEW_CLASSES = &H2
 
' UP-Down Klasse
Private Const ICC_UPDOWN_CLASS = &H10
 
' ControlBoxEx Klassen
Private Const ICC_USEREX_CLASSES = &H200
 
' Animate, Header, Hotkey, Listview, ProgressBar, StatusBar,
' Tab, Tooltip, ToolBar, Trackbar, Treeview und UP-Down
' Klassen
Private Const ICC_WIN95_CLASSES = &HFF
 
 
' Einige der Standard Fensterstyle
Private Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
 
' Progressbar Konstanten
Private Const WM_USER = &H400
Private Const CCM_FIRST = &H2000
Private Const CCM_SETBKCOLOR = (CCM_FIRST + 1)
Private Const PBM_DELTAPOS = (WM_USER + 3)
Private Const PBM_GETPOS = (WM_USER + 8)
Private Const PBM_GETRANGE = (WM_USER + 7)
Private Const PBM_SETBARCOLOR = (WM_USER + 9)
Private Const PBM_SETBKCOLOR = CCM_SETBKCOLOR
Private Const PBM_SETPOS = (WM_USER + 2)
Private Const PBM_SETRANGE = (WM_USER + 1)
Private Const PBM_SETRANGE32 = (WM_USER + 6)
Private Const PBM_SETSTEP = (WM_USER + 4)
Private Const PBM_STEPIT = (WM_USER + 5)
 
' Eigene Strukturen und Variablen
Private Type MinMax
  Min As Integer
  Max As Integer
End Type
 
Private TmpRange As MinMax
Private hProgressBar As Long
Private LastValue As Long
Private LastMin As Long
Private LastMax As Long
' Beim Initialisieren der Klasse die Progressbar
' erstellen und auf der Form anzeigen
Private Sub Class_Initialize()
  Dim Retval As Long, CCInit As INITCOMMONCONTROLSEX_TYPE
 
  ' Progressbar der Struktur zuweisen
  With CCInit
    .dwSize = Len(CCInit)
    .dwICC = ICC_PROGRESS_CLASS
  End With
 
  ' Progressbar registrieren
  Retval = InitCommonControlsEx(CCInit)
  If Retval = 0 Then
    MsgBox "Die ProgressBar konnte nicht registriert werden.", _
      vbCritical, "Fehler"
    Exit Sub
  End If
 
  ' Progressbar Fenster erstellen und auf der Form anzeigen
  hProgressBar = CreateWindowEx(0&, "msctls_progress", _
    "ProgressBar", WS_CHILD Or WS_VISIBLE, 5, 5, 200, 20, _
    Form1.hWnd, 0&, App.hInstance, 0&)
  If hProgressBar = 0 Then
    MsgBox "Progressbar Fenster konnte nicht erstellt werden."
  End If
End Sub
' Beim Zerstören der Klasse Progressbar entfernen
Private Sub Class_Terminate()
  DestroyWindow hProgressBar
End Sub
 
' Ermittelt und setzt den aktuell gewählten Wert der
' Progressbar
Public Property Let Value(ByVal NewValue As Integer)
  SendMessage hProgressBar, PBM_SETPOS, NewValue, 0&
End Property
 
Public Property Get Value() As Integer
  Value = SendMessage(hProgressBar, PBM_GETPOS, 0&, 0&)
End Property
 
' Ermittelt und setzt die minimale Reichweite der Progressbar
Public Property Let Min(ByVal NewValue As Integer)
  Dim TmpLng As Long
 
  ' Wir müssen die Struktur in eine Long-Variable umwandeln,
  ' um sie der Funktion zu übergeben
  TmpRange.Min = NewValue
  CopyMemory TmpLng, TmpRange, Len(TmpLng)
  SendMessage hProgressBar, PBM_SETRANGE, 0&, TmpLng
End Property
 
Public Property Get Min() As Integer
  Min = TmpRange.Min
End Property
 
' Ermittelt und setzt die maximale Reichweite der Progressbar
Public Property Let Max(ByVal NewValue As Integer)
  Dim TmpLng As Long, a(1) As Integer
 
  ' Wir müssen die Struktur in eine Long-Variable umwandeln,
  ' um sie der Funktion zu übergeben
  TmpRange.Max = NewValue
  CopyMemory TmpLng, TmpRange, Len(TmpLng)
  SendMessage hProgressBar, PBM_SETRANGE, 0&, TmpLng
End Property
 
Public Property Get Max() As Integer
  Max = TmpRange.Max
End Property
' Setzt die Fensterposition und Größe
' (in diesem Fall der Progressbar)
Public Function SetPos(ByVal Left As Long, ByVal Top As Long, _
  ByVal Width As Long, ByVal Height As Long)
 
  MoveWindow hProgressBar, Left, Top, Width, Height, True
End Function
 
<hr size=1>
 
' Fügen Sie nachfolgenden Code in eine Form ein (Form1!)
' Benötigt wird zusätzlich noch ein Command1-Button
Private Progress1 As clsProgressBar
' Lädt die ProgressBar und zeigt sie an
Private Sub Form_Load()
  Set Progress1 = New clsProgressBar
  Me.ScaleMode = vbPixels
 
  ' Voreinstellungen
  Progress1.Min = 0
  Progress1.Max = 1000
End Sub
' Die ProgressBar, sowie den CommadButton immer in der
' Mitte des Fenster anzeigen
Private Sub Form_Resize()
  Progress1.SetPos Me.ScaleWidth / 3, _
    (Me.ScaleHeight - 20) / 2, Me.ScaleWidth / 3, 20
  Command1.Top = (Me.ScaleHeight - 20) / 2 + 25
  Command1.Left = (Me.ScaleWidth - Command1.Width) / 2
End Sub
' Startet einen Ablauf der Progressbar
Private Sub Command1_Click()
  Dim i As Long
 
  Command1.Enabled = False
  With Progress1
    For i = .Min To .Max Step 0.01
      .Value = i
      DoEvents
    Next i
 
    MsgBox "Vorgang beendet !", vbInformation, _
      "ProgressBar ohne ActiveX"
    .Value = .Min
  End With
  Command1.Enabled = True
End Sub

Diese Seite wurde bereits 10.450 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2019 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