Multiple wraped plugin editors inside one component


#1

I am wrapping multiple plugins inside my plugin (currently Windows version) and I am trying to show their editors at once (without success, as you can expected - it crashes when 2nd editor is displayed). I've read thru several threads in this forum related to this issues and found the reason, but didn't find a solution how to make it work.

There were general solutions suggested like creating heavy weight window or TopLevelWindow for each plugin. Unfortunately i am not very experienced with JUCE, so i am a bit lost how to do it.

Is there maybe someone who has successfully done it ? Does anyone have any ideas, hints, directions, examples of possible solutions ? I would be VERY interested in it and i am sure some other people on this forum would be, too.

Thank you !!!


#2

I am checking code from OpenGL component, which creates native window - i guess this is the right direction ?

***

 void createNativeWindow (Component& component)

    {
        Component* topComp = component.getTopLevelComponent();
        nativeWindow = createNonRepaintingEmbeddedWindowsPeer (*dummyComponent, topComp->getWindowHandle());

        if (ComponentPeer* peer = topComp->getPeer())
            updateWindowPosition (peer->getAreaCoveredBy (component));

        nativeWindow->setVisible (true);
        dc = GetDC ((HWND) nativeWindow->getNativeHandle());
    }
 


#3

It's not possible to have multiple editors inside a common parent window - the plugins SDKs were never designed to support that. You'd need to put each one inside its own separate window.


#4

Yes, i am aware it isnt possible with a single parent window.

I've read few times in this forum about creating heavy weight native window for each plugin editor and then display these windows over the JUCE component. This solution was never declared as "not possible", so i am still hoping.

Because of that i am looking at OpenGL code mentioned. 

Actually i would like to make a rack of plugins - if every plugin would be in a separate window, it would be impossible to set its position relative to rack and a whole bunch of other problems ...

Just a bit of brainstorming, i guess i am really stuck now :/

 

 


#5

I don't understand what you're stuck on.. You certainly need to have these in separate windows, but that's not hard and you can do it without needing to do any native hackery. Using OpenGL is likely to break a lot of things though, you should keep that away from any plugin windows.


#6

I was refering to this post (thread) as well:

http://www.juce.com/comment/298651#comment-298651

 


#7

I guess you have in mind separate plugin windows like in JUCE Plugin Host ?

Do you suggest implementing virtual rack using separate borderless DocumentWindow for each plugin ?

Thanks for your help !!!


#8

Yes, that's the general idea.


#9

Maybe I'm misunderstsnding, but could each of the plugins you're trying to wrap up not just be a regular plugin / dynamic library that becomes a resource of the parent plugin and is loaded as if the parent plugin is a host? I see no reason a plugin can't also be a host.

If needs be they could become part of a static library but that raises several complexities, dynamic libraries would be far easier I suspect.


#10

I can say my plugin is already a host - it loads and handles multiple .dll plugins as expected.

The problem is that my plugin can't show (inside its window) multiple (more than one) hosted plugin's editor at once. If more than one would be displayed, they must live in a separate 'native' top level windows. As i understand now, this is because of JUCE and plugin's SDK design.

The main issue here is that there is no hierarchy (parent/child) established between my plugin and hosted plugins - i would like they all togeteher visually behave as they are one plugin in one window.

On the other side, i have a basic working example of non-JUCE standalone program which is doing the same using Win32 native windows .