Using JUCE Widgets in another application


#1

Hi Jules,
I want to use juce widgets in another application, so as you have mentioned in the Documentation , i have done like this

juce::initialiseJuce_GUI(); juce::PlatformUtilities::setCurrentModuleInstanceHandle(hWnd);

But when i show the Button like this , it is not attaching to the window.

juce::TextButton* pButton = new juce::TextButton("dad", ""); pButton->setVisible(true); pButton->addToDesktop( juce::ComponentPeer::windowIsResizable , hWnd); pButton->setBounds(10, 10, 200, 200); pButton->setLookAndFeel(&juce::LookAndFeel::getDefaultLookAndFeel());

i think i should not say addtoDesktop(), but not sure what method to use to attach to the Window.
So please tell me how to use the widgets in another application windows.


#2

Mixing up windows that are created and managed by different frameworks is always going to be a nightmare, I should warn you! You certainly shouldn’t be using the resizable window flag for a child window, but other than that, I’ve no idea what could be going wrong - you need to get in there with your debugger and do some digging…


#3

Hi Jules,
I thought , there is an option in juce to use the widgets in another applications…

So, when should we use like this

juce::initialiseJuce_GUI();
juce::PlatformUtilities::setCurrentModuleInstanceHandle(hWnd);

I tried to do as you have done in OpenGLComponent
I created a base component in which i am keeping the TextButton as child.
I created a peer in that base component and attached the main window handle as a parent to the peer handle

It is attaching the component , but it is not doing any repaint on mouse over. When i debug i noticed that the component flag flags.hasHeavyweightPeerFlag should be true to do any repainting or to handle any mouse events. I mean even the mouse even comes to peerWindowsProc(), while checking for whether the component contains the x and y , it returns false as there is no parent component as well as the component hasHeavyweightPeerFlag is false…

Please check and tell some solution…


#4

Not explicitly… Sure, you can do some platform-specific hacks to embed a juce window in another window, but that’s not a ‘feature’ of the library, and I can’t guarantee that it’ll actually work!

If you want an example to follow, you should look at the audio/browser plugin code - that’s where it’s embedding a juce window in another one. The opengl comp is the wrong way round - it’s embedding another window in a juce one.


#5

Thanks Jules, I didn’t build audio plugin but i got the sample to see how to use…