That is quite explicit. I was thinking about some method for intercepting events. I tried fiddling with creating a custom GraphicsWindowWin32 class, but it turns out that this is explicitly created internally in:
osg::GraphicsContext* Win32WindowingSystem::createGraphicsContext( osg::GraphicsContext::Traits* traits ) { ... osg::ref_ptr<osgViewer::GraphicsWindowWin32> window = new GraphicsWindowWin32(traits); } So this does not seem to be the way to catch windows messages. My idea was that I could register my instance of the GraphicsWindowWin32 to implement the virtual method: LRESULT GraphicsWindowWin32::handleNativeWindowingEvent( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) Where I could catch all windows events. Turns out that I do not have enough understanding when and where context etc is created. It seems that a GraphicsWindowWIn32 is first created at the call to: osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get()); And then at the call to: viewer->realize(); will also result in a call to GraphicsContext::createGraphicsContext(Traits* traits), which in turn will create yet another GraphicsWindowWin32. So there lies my problem, my call to viewer->realize() will override my first call to GraphicsContext::createGraphicsContext(traits.get()); Not sure how to get around this though. Ideas? /Anders On Wed, Nov 11, 2015 at 5:05 PM, Trajce Nikolov NICK < trajce.nikolov.n...@gmail.com> wrote: > Hi Anders, > > here is what I do for this on Windows > > while (!viewer->done()) > { > > #if defined(_WIN32) > MSG msg; > if (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) > { > ::GetMessage(&msg, NULL, 0, 0); > > if (wins.size()) > { > osgViewer::GraphicsHandleWin32 *hdl = > dynamic_cast<osgViewer::GraphicsHandleWin32*>(wins.at(0)); > if(hdl) > { > WNDPROC fWndProc = > (WNDPROC)::GetWindowLongPtr(hdl->getHWND(), GWLP_WNDPROC); > if (fWndProc && hdl->getHWND()) > { > ::CallWindowProc(fWndProc,hdl->getHWND(),msg.message, msg.wParam, > msg.lParam); > } > } > } > } > #endif > > On Wed, Nov 11, 2015 at 4:21 PM, Anders Backman <ande...@cs.umu.se> wrote: > >> Hi. >> >> Trying the 3DConnexion SpaceNavigator with OSG. However I would like to >> stay away from VRPN and such dependencies... >> >> I was wondering how to best intercept Windows messages from the >> GraphicsWindowWin32 class. >> >> This class has a virtual method handleNativeWindowingEvent which I would >> like to override to catch custom messages from my device. >> >> Would it be possible to implement a derived class and have that >> instantiated instead of the standard osgViewer::GraphicsWindowWin32 one? >> >> Or is there a different method to listen to the messages: >> >> ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) >> >> Thanks, >> Anders >> >> >> >> -- >> __________________________________________ >> Anders Backman, HPC2N >> 90187 Umeå University, Sweden >> and...@cs.umu.se http://www.hpc2n.umu.se >> Cell: +46-70-392 64 67 >> >> _______________________________________________ >> osg-users mailing list >> osg-users@lists.openscenegraph.org >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> >> > > > -- > trajce nikolov nick > > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > -- __________________________________________ Anders Backman, HPC2N 90187 Umeå University, Sweden and...@cs.umu.se http://www.hpc2n.umu.se Cell: +46-70-392 64 67
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org