Warum ?
Wird bei mir dynamisch über loadlibrary iniziiert.
Und NUR! für meine Anwendung gedacht.
Deine Anwendung wird dann aber auch nur auf das Instrument reagieren, solange diese den Focus hat.
Eine
DLL ist dafür nicht erforderlich, einen Hook innerhalb deiner Anwendung kannst du jederzeit setzen.
Die SuperClass nenn ich einfach mal so!
Verwaltet alle meine Controls "Button und Image" in einer einzigen WinProc.
Also alle Controls/Komponente oder wie auch immer die über meine
DLL in der HauptAnwendung erstellt werden.
Ich halte diese Form des Anwendungsaufbaus nicht für optimal.
Wenn tatsächlich alle Nachrichten in einer WinProc landen, wird eigentlich überhaupt kein Hook benötigt.
Du bekommst alle Tastaturereignisse und entscheidest selbst ob diese an die jeweils orginale WindProc weitergegeben oder anderweitig verarbeitet werden.
MMSystem dürfte für meine zwecke reichen. Wenn man es genau benennen will "winmm.dll"
Dafür muss ich keine Midi Schnittstelle (Siehe Midi Componente) verwenden.
Ausgenommen jetzt beim konvertieren von meinem Format nach MIDI da benötige ich zumindest den Header
um die Daten Ordnungsgemäß konvertieren und abspeichern zu können.
Wenn die Daten über eine separate Schnittstelle kommen, kann die Anwendung diese empfangen und verarbeiten, ohne Rücksicht darauf, welche Anwendung gerade den Focus hat.
Der gepostete Code bezieht sich nur darauf, wie die
DLL geladen wird.
Wichtig wäre aber, was macht die
DLL wenn ein Ereignis eintritt, bzw. wie gibt diese das Ereignis an die Anwendung weiter. Wie reagiert deine Anwendung auf das Ereignis, das von der
DLL an die Anwendung weiter gereicht wird.
Meine Button lösen kein Event mehr aus nach einem klick.
...
Meine Button bekommen nicht mehr den Focus sobald ich den Focus auf die HauptAnwendung lege.
Da schein in deiner speziellen WinProc etwas nicht so zu laufen wie es sollte.
Hier wäre auch etwas Code angebracht, insbesondere:
- Wenn eine Nachricht selbst verarbeitet wird, stimmt der Rückgabewert, werden zusammengehörige Nachrichten auch auf die selbe Weise verarbeitet (Stichwort KeyDown, KeyUp).
- Wie wird sichergestellt, dass die richtige orginale WindProc des Steuerelements aufgerufen wird, zu dem das
Handle der Nachricht gehört.
- Warum wird der Focus verändert und für was dient dieses "GetFocus" in deiner SuperClass überhaupt?
Häng am besten mal das Projekt an deinen Beitrag.