Einzelnen Beitrag anzeigen

supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#1

Maus Messages an VST-Plugin senden?

  Alt 19. Jul 2010, 23:45
Hi!
Ich bin an einem größeren Projekt dran und möchte gerne wissen, wie ich ein VST-Plugin, daß das handle eines Panels als parent nimmt(als Anzeige), dazu bringen kann, daß ich mausaktionen direkt an das Plugin senden kann?
Also im Grunde genommen möchte ich

1. VST Plugin nicht anzeigen (kein Visuelles Fenster)
und dieses
2. Über netzwerk mit Mouseeingaben steuern können (Click, Move usw)

Derzeit hab ich es unglücklich gelöst, indem ein Form mit einem Panel drauf - und das Plugin als child des Panels als "Gui" übernimmt und die Maus per systemweite mouse commands gesteuert wird - das ist unschön und ich kann auch nicht mehrere plugins gleichzeitig übers netzwerk steuern, weil es ja nur eine Maus gibt

Die Visuelle Rückmeldung funktioniert via "Render to Bitmap" und dann per PNG verschickt - das ist atm kein Problem.

Was ich bisher ausprobier habe sind per "postmessage" - messages an das handle des plugins zu senden (ist child des panels)
es geht auch TEILWEISE - es werden clicks angenommen - aber moves und clicks auf manche grafischen knöpfe des plugins werden nicht übernommen
mit winsight zeigt es mir auch massenhaft messages an wie "WM_MOUSELEAVE" was wohl das ganze auch zum wackeln bringt, wenn die mouse neben dem fenster sitzt
im prinzip müsste ich alle mousemessages an das VST plugin abfangen und "vergessen" und dann meine eigenen mouse messages an das handle schicken
ein wndproc überschreiben des panels hat irgendwie nicht funktioniert - ich kann das plugin auf dem "hostrechner" trotzdem per maus steuern wie gehabt

hier hab ich die wndproc überschrieben - was wohl nicht funktioniet:
Delphi-Quellcode:

  type Tpanel2 = class(Tpanel)
    public
    procedure WndProc(var Message: TMessage); override;
  end;


procedure Tpanel2.WndProc(var Message: TMessage);
begin
  case message.Msg of
   WM_MOUSEMOVE: exit;
    WM_MOUSELEAVE: exit;
    WM_LBUTTONDOWN: exit;
    WM_LBUTTONup: exit;
    WM_RBUTTONDOWN: exit;
    WM_RBUTTONup: exit;
    WM_CHILDACTIVATE: exit;
  end;

   inherited WndProc(Message);
end;
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!

Geändert von supermuckl (19. Jul 2010 um 23:52 Uhr)
  Mit Zitat antworten Zitat