Задача заключается в следующем, мне нужно, чтобы, на сколько бы окон не висел SubClass, все сообщения от всех окон приходили в одну процедуру WinProcAll. Все сделал, но имеется следующий вопрос.
имею SubClass Dll. очень давно взял в кирпичах переделал под свои нужды и уже ни могу вспомнить, кто автор. Может по названиям переменных кто-то вспомнит кто автор, за что заранее извиняюсь.
Внутри Dll два класса. clsCaller, и собственно clsSubClasser
Вызов происходит так
- Код: Выделить всё
Set Cs = New clsCaller
Cs.AddToInterests hWnd_интересующего_окна1, Me.hWnd
...
Cs.AddToInterests hWnd_интересующего_окна2, Me.hWnd
...
Cs.AddToInterests hWnd_интересующего_окна3, Me.hWnd
при этом создается SubClass интересующего окна, и в экземпляре SubClasser-ера этого окна, к Private коллекции Callers добавляется (запоминается) Cs(экземпляр моего clsCaller).
При работе в moduleWinProc, прохожу по всем запомненным Callers окна и инициирую Event
- Код: Выделить всё
For i = 1 To Callers.Count
Set REFtoCaller = Callers.Item(i)
If Not REFtoCaller Is Nothing Then
Call REFtoCaller.Raise_Event(hWnd, uMsg, wParam, lParam, lRetVal)
Set REFtoCaller = Nothing
End If
Next
Таким образом все сообщения поступают во все clsCaller которые включены в коллекцию Callers, а оттуда в одну процедуру, с помощью одного итого же Event-а
Научите относительно следующего:
По идее, если б Event посылался в одну процедуру WinProc после
RaiseEvent(hWnd, uMsg, wParam, lParam, lRetVal)
должно происходить проверка lRetVal и в случае его неизменения вызов функции
CallWindowProc(prevProc, mhWnd, uMsg, wParam, ByVal lParam)
Вопрос такой:
куда посадить CallWindowProc(prevProc, mhWnd, uMsg, wParam, ByVal lParam)
в случае приведенном выше? Когда имеются несколько RaiseEvent(hWnd, uMsg, wParam, lParam, lRetVal)
Спасибо, если кто поможет.