ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 22.04.2003

Diese Seite wurde zuletzt aktualisiert am 22.04.2003
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Aktivitäts-Prüfung

Zurück...


Anzeige

(-hg) mailto:hg_isctlparentformactive@aboutvb.de

Wenn Sie in Erfahrung bringen möchten, ob das Hauptfenster, in dem sich ein Steuerelement befindet, gerade das aktive Fenster des Systems ist, können Sie im einfachsten Fall das Fenster-Handle des Eltern-Forms mit dem von der API-Funktion GetForegroundWindow gelieferten Handle auf Übereinstimmung hin vergleichen. Die benötigte Referenz auf das Eltern-Form eines Steuerelements erhalten Sie normalerweise über die Parent-Eigenschaft eines Steuerelements.

Doch bei einem Steuerelement, das auf einem UserControl platziert ist, liefert Ihnen die Parent-Eigenschaft des Steuerelements eine Referenz auf eben dieses UserControl. Sie könnten zwar nun innerhalb des UserControls über die Parent-Eigenschaft des Extender-Objekts an das Eltern-Form gelangen - falls nicht zufällig auch dieses UserControl wiederum auf einem anderen UserControl platziert ist. Die Visual Basic-eigenen Mechanismen mit ihrer uneinheitlichen Interpretation des Parent-Objekts kann Ihnen offensichtlich so nicht zum Ziel bringen.

Doch da wir mit der API-Funktion GetForegroundWindow schon in die API-Kiste greifen, können wir auch noch ein weiteres Mal hinein greifen und dabei die Funktion GetParent hervorziehen. Diese liefert Ihnen jeweils das Handle des Eltern-Fensters zu einem gegebenen Handle. In einer Do...Loop-Schleife können Sie nun Eltern-Ebene für Eltern-Ebene so lange aufwärts marschieren, bis GetParent kein Eltern-Handle mehr ermitteln kann und daher den Wert 0 zurückgibt. Damit wäre das Handle der zuletzt ermittelten Eltern-Ebene das gesuchte Handle des Eltern-Forms, das Sie nun mit dem Rückgabewert von GetForegroundWindow vergleichen können.

Die folgende Hilfsfunktion IsCtlParentFormActive hangelt sich für Sie durch die Ebenen und nimmt auch den besagten Vergleich vor:

Private Declare Function GetParent Lib "user32" _
 (ByVal hwnd As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long

Public Function IsCtlParentFormActive(Control As Control) As Boolean
  Dim nParentWnd As Long
  Dim nWnd As Long
  
  On Error Resume Next
  nWnd = Control.hwnd
  If Err.Number Then
    Err.Raise 5
  End If
  On Error GoTo 0
  Do
    nParentWnd = GetParent(nWnd)
    If nParentWnd = 0 Then
      IsCtlParentFormActive = CBool(GetForegroundWindow() = nWnd)
    Else
      nWnd = nParentWnd
    End If
  Loop While nParentWnd
End Function

Beispiel-Projekt und Modul modIsCtlParentFormActive (isctlparentformactive.zip - ca. 3,2 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer