vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Sch?tzen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 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: Fenster22.03.05
GetClassName-Funktion

Diese Funktion ermittelt den Klassennamen eines Fensters.

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

Deklaration:

Declare Function GetClassName Lib "user32.dll" _
  Alias "GetClassNameA" ( _
  ByVal hWnd As Long, _
  ByVal lpClassName As String, _
  ByVal nMaxCount As Long) As Long

Beschreibung:
Diese Funktion ermittelt den Klassennamen eines Fensters.

Parameter:
hWndErwartet das Fensterhandle des Fensters, dessen Klassennameermittelt werden soll.
lpClassNameErwartet einen Puffer der schon mit Leerzeichen vorinitialisiert ist,um den Klassenamen zu empfangen.
nMaxCountErwartet die Größe des Puffers in Bytes.

Rückgabewert:
Ist die Funktion erfolgreich, so liefert sie die Anzahl der Zeichen zurück, die der Klassenname lang ist, exklusive des "VBNullChar" Zeichens. Andernfallswird "0" zurückgegeben.

Beispiel:

Private Declare Function GetClassLong Lib "user32.dll" _
  Alias "GetClassLongA" ( _
  ByVal hWnd As Long, _
  ByVal nIndex As Long) As Long
Private Declare Function SetClassLong Lib "user32.dll" _
  Alias "SetClassLongA" ( _
  ByVal hWnd As Long, _
  ByVal nIndex As Long, _
  ByVal dwNewLong  As Long) As Long
Private Declare Function GetClassName Lib "user32.dll" _
  Alias "GetClassNameA" ( _
  ByVal hWnd As Long, _
  ByVal lpClassName As String, _
  ByVal nMaxCount As Long) As Long
Private Declare Function CallWindowProc Lib "user32.dll" _
  Alias "CallWindowProcA" ( _
  ByVal lpPrevWndFunc As Long, _
  ByVal hWnd As Long, _
  ByVal Msg As Long, _
  ByVal WParam As Long, _
  ByVal lParam As Long) As Long
Private Declare Function LoadImage Lib "user32" _
  Alias "LoadImageA" ( _
  ByVal hInst As Long, _
  ByVal lpsz As String, _
  ByVal dwImageType As Long, _
  ByVal dwDesiredWidth As Long, _
  ByVal dwDesiredHeight As Long, _
  ByVal dwFlags As Long) As Long
 
' Get/Set-Class nIndex-Konstanten
Private Const GCL_CBCLSEXTRA = -20 ' Ermittelt die Größe des Extraspeichers der Klasse
Private Const GCL_CBWNDEXTRA = -18 ' Ermittelt die Größe des Extraspeichers des Fensters
Private Const GCL_HBRBACKGROUND = -10 ' Ermittelt das Handle des Brushs der Klasse 
Private Const GCL_HCURSOR = -12 ' Ermittelt das Handle des Cursors der Klasse
Private Const GCL_HICON = -14 ' Ermittelt das Handle des Icons der Klasse
Private Const GCL_HMODULE = -16 ' Ermittelt das Handle des Moduls der Klasse
Private Const GCL_MENUNAME = -8 ' Ermittelt den Menünamen der Klasse
Private Const GCL_STYLE = -26 ' Ermittelt die Fensterstyle der Klasse
Private Const GCL_WNDPROC = -24 ' Ermittelt die Prozeduradresse der Klasse
 
' LoadImage dwImageType-Konstanten
Private Const IMAGE_BITMAP = 0 ' gibt ein Handle zu einem Bitmap zurück
Private Const IMAGE_ICON = 1 ' gibt ein Handle zu einem Icon zurück
Private Const IMAGE_CURSOR = 2 ' gibt ein Handle zu einem Cursor zurück
Private Const IMAGE_ENHMETAFILE = 3 ' gibt ein Handle zu einer Enhanced Metadatei zurück
 
' LoadImage dwFlags-Konstanten
Private Const LR_CREATEDIBSECTION = &H2000 ' Lädt ein Bitmap mit 'Dib-Sektionen 
Private Const LR_DEFAULTCOLOR = &H0 ' Lädt das Bild in den Standardfarben (Not LR_MONOCHROME)
Private Const LR_DEFAULTSIZE = &H40 ' Lädt das Bild in der Standardgröße des Bildes
Private Const LR_LOADFROMFILE = &H10 ' Lädt das Bild von einer Datei
Private Const LR_LOADMAP3DCOLORS = &H1000 ' Ersetzt bestimmte Grautöne eines Bildes mit den Systemfarben 
' für 3D-Ramen die normalerweise den Grautönen  zugeordnet sind
Private Const LR_LOADTRANSPARENT = &H20 ' Ersetzt alle Pixel des Bildes mit dem Farbwert des Ersten Pixels  
' des Bitmaps durch die Standard-Fensterhintergrundfarbe 
Private Const LR_MONOCHROME = &H1 ' Lädt das Bild in Schwarzweiß
Private Const LR_SHARED = &H8000 ' Diese Option erzwingt, dass wenn die Funktion mehrmals 
' aufgerufen wird, jedes Mal das gleiche Handle zurückgegeben 
' wird und das Bild nicht erneut geladen wird
Private Const LR_COPYFROMRESOURCE = &H4000 ' Lädt das Bild aus einer Ressource 
 
' Eine der Fensternachrichten
Private Const WM_CLOSE = &H10 ' Schließt das Fenster
 
Private hIcon As Long
' Der Fensterklasse unserer Form ein anderes Icon zuweisen
Private Sub Form_Load()
  Dim Retval As Long
  Dim Buffer As String * 256
 
  ' Klassennamen ermitteln
  Retval = GetClassName(Me.hWnd, Buffer, Len(Buffer))
  If Retval = 0 Then
    MsgBox "Der klassenname konnte nicht Ermittelt werden"
  Else
    MsgBox "Der Klassenname dieses Fensters ist """ & Left$(Buffer,  _
    Retval) & """"
  End If
 
  ' Icon laden
  hIcon = LoadImage(App.hInstance, App.Path & "\Misc01.ico", IMAGE_ICON,  _
  16&, 16&, LR_LOADFROMFILE)
  If hIcon = 0 Then
    MsgBox "Fehler beim Laden des Icons"
    Exit Sub
  End If
 
  ' Icon der Klasse zuweisen (Das Fenster zeigt darauf keinerlei Reaktionen, 
  ' man müsste zu diesem Zweck selbst ein Fenster dieser Klasse mit Hilfe
  ' der CreateWindowEx Funktion erstellen)
  Retval = SetClassLong(Me.hWnd, GCL_HICON, hIcon)
  If Retval = 0 Then
    MsgBox "Das Icon konnte nicht zugewiesen werden"
  End If
End Sub
' Form schließen einmal anders
Private Sub Command1_Click()
  Dim ProcAddress As Long
 
  ' Prozedur-Adresse unserer Form bekommen
  ProcAddress = GetClassLong(Form1.hWnd, GCL_WNDPROC)
  If ProcAddress = 0 Then
    MsgBox "Die Prozeduradresse der Fensterklasse konnte nicht  _
    ermittelt werden."
    End
  End If
 
  ' Unserer Form die Schließen-Nachricht zusenden
  CallWindowProc ProcAddress, Me.hWnd, WM_CLOSE, 0&, 0&
End Sub

Diese Seite wurde bereits 13.514 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