vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Re: Subclassing des Excel-Fensters mit VBA 
Autor: rocki
Datum: 31.05.05 09:42

Für das Abfangen der Nachrichten benutze ich das Prozedürchen do_sublass und die Funktion fWindowProc:
Public Sub do_subclass()
  lpPrevWndProc = SetWindowLong(Application.hWnd, GWL_WNDPROC, AddressOf _
    fWindowProc)
End Sub
 
Function fWindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As _
  Long, ByVal lParam As Long) As Long
    fWindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function
Sobald ich do_subclass aufrufe, funktioniert Excel ganz normal, meine Funktion fWindowProc bekommt die Nachrichten und leitet sie an die alte Prozedur lpPrevWndProc weiter. Nur wenn man auf die Titelleiste (z.B. auf den Minimierbutton [_]) klickt, reagiert Excel nicht mehr. Die Blockade kann gelöst werden, indem man z. B. das Fenster wechselt. Dann kann ich das Makro undo_subclass aufrufen, und alles ist wieder ok.
Public Sub undo_subclass()
  Call SetWindowLong(Application.hWnd, GWL_WNDPROC, lpPrevWndProc)
End Sub
Zur Deklaration benötige ich noch
Public Const GWL_WNDPROC = (-4)
Public lpPrevWndProc As Long
und die Deklaration der API-Funktionen
Declare Function CallWindowProc Lib "user32" Alias _
   "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As _
   Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As _
   Long) As Long
 
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
   (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As _
   Long) As Long
Danke für die viele Mühe !

Gruß Rocki
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Subclassing des Excel-Fensters mit VBA1.782rocki30.05.05 14:04
Re: Subclassing des Excel-Fensters mit VBA1.108ModeratorMartoeng30.05.05 23:11
Re: Subclassing des Excel-Fensters mit VBA1.130rocki31.05.05 09:42
Re: Subclassing des Excel-Fensters mit VBA1.106ModeratorMartoeng31.05.05 21:20
Re: Subclassing des Excel-Fensters mit VBA1.062rocki01.06.05 10:24
Re: Subclassing des Excel-Fensters mit VBA1.068ModeratorMartoeng01.06.05 23:35
Re: Subclassing des Excel-Fensters mit VBA1.299Mortimer07.06.05 22:23
Re: Subclassing des Excel-Fensters mit VBA1.086ModeratorMartoeng08.06.05 13:50

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2022 [email protected] 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