Hi Joe, the first exception I believe is something to do with mixing unmanaged with managed code (shouldn't be the qualifier 'unsafe' used??? - sorry, but don't know the tricks of mixing unmanaged with managed code)
But, have a look here http://forum.openscenegraph.org/viewtopic.php?t=13944 , it was for C# sample.The unmanaged code is wrapped into dll of exposing a function (unmanaged) that is initializing and running the viewer from unmanaged dll. The second exception is I believe you are not setting the inheriteddata. If you still want to try with mixing managed and unmanaged, You don't need to set up the viewer as embedded. Only pass the handle of the form's client area - something like traits->inheritedWindowData = new osgViewer::GraphicsWindowWin32::WindowData(this->Handle->ToInt32()) in your form init Nick On Mon, Jul 7, 2014 at 10:42 AM, Bluish Joe <mirco.andr...@tesigroup.it> wrote: > Hi Trajce, very kind! > It's managed C++ (even if I would finally use OSG in a C++Builder > application, but I fear I will need to build OSG in Visual Studio and make > a a wrapper.......). > > I tried many examples. I haven't tried osgviewerMFC because I haven't got > the Visual Studio project files (CMake didn't create them for this project) > and I'm new to MFC. > Anyway I usually get these errors: > > 1) Eccezione non gestita di tipo > 'System.Runtime.InteropServices.SEHException' in TestOsgVS.exe. > Informazioni aggiuntive: eccezione lanciata da un componente esterno. > when executing > Code: > osg::ref_ptr<osg::Node> model1 = > osgDB::readNodeFile("C:\\Path\\to\\OpenSceneGraph-3.0.1-VS10.0.30319-x86-release-12741\\data\\cessna.osg"); > > > > 2) Eccezione non gestita di tipo 'System.AccessViolationException' in > TestOsgVS.exe > when executing > Code: > traits->inheritedWindowData = windata; > > > > One of my test is this: > > > Code: > #pragma once > > #include <osgDB/ReadFile> > //#include <osgUtil/Optimizer> > #include <osgViewer/Viewer> > //#include <osgViewer/api/Win32/GraphicsWindowWin32> > //#include <osgViewer/CompositeViewer> > #include <osgGA/TrackballManipulator> > #include <osgViewer/ViewerEventHandlers> > > #include <iostream> > #include <Windows.h> > #include <string> > > namespace TestOsgVS { > > using namespace System; > using namespace System::ComponentModel; > using namespace System::Collections; > using namespace System::Windows::Forms; > using namespace System::Data; > using namespace System::Drawing; > using namespace std; > > /// <summary> > /// Riepilogo per Form1 > /// </summary> > public ref class Form1 : public System::Windows::Forms::Form > { > public: > Form1(void) > { > InitializeComponent(); > // > //TODO: aggiungere qui il codice del costruttore. > // > } > > protected: > /// <summary> > /// Liberare le risorse in uso. > /// </summary> > ~Form1() > { > if (components) > { > delete components; > } > } > private: System::Windows::Forms::Panel^ pOSG; > private: System::Windows::Forms::Button^ button1; > protected: > > private: > /// <summary> > /// Variabile di progettazione necessaria. > /// </summary> > System::ComponentModel::Container ^components; > > osgViewer::Viewer* viewer; > osg::Camera* camera; > > #pragma region Windows Form Designer generated code > /// <summary> > /// Metodo necessario per il supporto della finestra di > progettazione. Non modificare > /// il contenuto del metodo con l'editor di codice. > /// </summary> > void InitializeComponent(void) > { > this->pOSG = (gcnew System::Windows::Forms::Panel()); > this->button1 = (gcnew System::Windows::Forms::Button()); > this->SuspendLayout(); > // > // pOSG > // > this->pOSG->BackColor = > System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(255)), > static_cast<System::Int32>(static_cast<System::Byte>(128)), > > static_cast<System::Int32>(static_cast<System::Byte>(128))); > this->pOSG->Location = System::Drawing::Point(43, 29); > this->pOSG->Name = L"pOSG"; > this->pOSG->Size = System::Drawing::Size(379, 265); > this->pOSG->TabIndex = 0; > // > // button1 > // > this->button1->Location = System::Drawing::Point(482, 29); > this->button1->Name = L"button1"; > this->button1->Size = System::Drawing::Size(177, 94); > this->button1->TabIndex = 1; > this->button1->Text = L"button1"; > this->button1->UseVisualStyleBackColor = true; > this->button1->Click += gcnew System::EventHandler(this, > &Form1::button1_Click); > // > // Form1 > // > this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); > this->AutoScaleMode = > System::Windows::Forms::AutoScaleMode::Font; > this->ClientSize = System::Drawing::Size(716, 503); > this->Controls->Add(this->button1); > this->Controls->Add(this->pOSG); > this->Name = L"Form1"; > this->Text = L"Form1"; > this->ResumeLayout(false); > > } > #pragma endregion > > > private: System::Void button1_Click(System::Object^ sender, > System::EventArgs^ e) { > > // load model from file > osg::ref_ptr<osg::Node> loadedModel = > > osgDB::readNodeFile("C:\\Path\\to\\OpenSceneGraph-3.0.1-VS10.0.30319-x86-release-12741\\data\\cow.osgt"); > > //from osgviewerSDL example > osgViewer::Viewer viewer; > osg::ref_ptr<osgViewer::GraphicsWindowEmbedded> gw = > viewer.setUpViewerAsEmbeddedInWindow(50,50,200,200); > viewer.setSceneData(loadedModel.get()); > viewer.setCameraManipulator(new osgGA::TrackballManipulator); > viewer.addEventHandler(new osgViewer::StatsHandler); > viewer.realize(); > > // draw the new frame > viewer.frame(); > } > }; > } > > > > Many thanks for your help.[/list][/list] > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=60189#60189 > > > > > > _______________________________________________ > 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