I wrote a Plugin Wrapper in a form that the Plugin doesn’t get “hosted” by JUCE, but actually wrapped, i.e. calls host<->plugin are mainly sent directly without JUCE wrapping/translation going on. The Wrapper “pretends” to be the “wrapped plugin”, including name, manufacturer, ID etc.
I want to extend the wrapped plugin UI with a “header”.
I got it going already, by creating a main component, dividing it by a header/label component (for testing purpose) and a component holding the wrapped plugins UI. I pass the components native window handle to the plugins dispatcher opCode OpenEditor, and it basically works, including resizing.
However, there is the odd plugin which doesn’t work. Mainly Applied Accoustics Systems plugins, they paint their content at the parents HWND, overwriting “my header”.
So, I need/want a native HWND where to put the plugins UI, preventing it from overwriting my header/lightweiht HWND.
I read about OpenGL doing it, but couldn’t figure out what to do, if even possible, please any help?
I thought about creating a desktop window holding the wrapped plugins UI, following the position of the main component (holding the header), but this doesn’t seem to work, aren’t there any “moved” callbacks for hosts HWND?
Also, I noticed some strange behaviours with for example iZotope Iris (1/2). When resizing the UI, then closing and reopening it, it is vertically misaligned. The host window is of correct size, but the content is drawn vertically misaligned. It isn’t specific to my wrapper, it misbehaves “unwrapped”, too.
But I don’t like this: I thought about NOT destroying the editor/components, but only hiding it when the editor should be closed, and showing it again when the Editor gets opened again. This should prevent this misbehavior.
Apart from memory consumption, is there any drawback? I mean, opening UIs shall be much faster this way, too…
Thanks for your help!